MySQLのCheat Sheet

rootでログイン

mysql -u root -p

パスワードのアップデート

mysql> use mysql
Database changed

mysql>UPDATE user SET authentication_string=password('newpwd')
 -> WHERE User = 'root';
mysql> FLUSH PRIVILEGES;

パスワードのセキュリティレベル

mysql> SHOW VARIABLES LIKE 'validate_password%';
mysql> SET GLOBAL validate_password_length=6;
mysql> SET GLOBAL validate_password_policy=LOW;
mysql> SHOW VARIABLES LIKE 'validate_password%';
mysql> SET PASSWORD FOR 'root'@'localhost'=password('root');

匿名アカウントのパスワードの割り当て

mysql> SET PASSWORD FOR ''@'localhost' = PASSWORD('newpwd');
mysql> SET PASSWORD FOR ''@'host_name' = PASSWORD('newpwd');
mysql> FLUSH PRIVILEGES;

匿名アカウントの削除

mysql> DROP USER ''@'localhost';
mysql> DROP USER ''@'{host}';

ユーザーの確認

mysql> SELECT user,host FROM mysql.user;

存在するデータベースの一覧を確認

mysql> SHOW DATABASES;

外部ホストからの接続を許可する

mysql> GRANT ALL PRIVILEGES ON client_data.* TO '{user}'@'{host}' identified by '{password}' WITH GRANT OPTION;

すべてのホストから接続できるようにする

mysql> GRANT ALL PRIVILEGES ON client_data.* TO '{user}'@'%' IDENTIFIED BY '{password}' WITH GRANT OPTION;

LANのすべてのホストから接続できるように設定する

例)ネットワーク:192.168.1.0/24

mysql> GRANT ALL PRIVILEGES ON client_data.* TO '{user}'@'192.168.1.%' IDENTIFIED BY '{password}' WITH GRANT OPTION;

外部ホストからのログイン

mysql -h {host} -u {user} -p

ユーザ作成

mysql> GRANT ALL PRIVILEGES ON *.* TO 'user'@'localhost' IDENTIFIED BY 'password' WITH GRANT OPTION;
mysql> FLUSH PRIVILEGES;
mysql> GRANT ALL PRIVILEGES ON {db_name}.* TO 'user'@localhost IDENTIFIED BY 'password' WITH GRANT OPTION;
mysql> FLUSH PRIVILEGES;
mysql> GRANT ALL PRIVILEGES ON *.* TO 'user'@localhost IDENTIFIED BY 'password';
mysql> FLUSH PRIVILEGES;
mysql> GRANT ALL PRIVILEGES ON {db_name}.* TO 'user'@'localhost' IDENTIFIED BY 'password';
mysql> FLUSH PRIVILEGES;
mysql> GRANT SELECT,INSERT,UPDATE,DELETE ON *.* TO 'user'@'localhost' IDENTIFIED BY 'password';
mysql> FLUSH PRIVILEGES;
mysql> GRANT SELECT,INSERT,UPDATE,DELETE ON {db_name}.* TO 'user'@'localhost' IDENTIFIED BY 'パスワード';
mysql> FLUSH PRIVILEGES;

権限追加

mysql> GRANT CREATE ON {db_name}.* TO 'user'@'localhost';
mysql> GRANT DROP ON {db_name}.* TO 'user'@'localhost';
mysql> GRANT ALTER ON {db_name}.* TO 'user'@'localhost';

権限の確認

mysql> SHOW GRANTS FOR 'user'@'localhost' \G

権限の削除

mysql> REVOKE ALL PRIVILEGES ON *.* FROM 'user'@'localhost';
mysql> REVOKE 削除する権限 ON {db_name.*} FROM 'user';

データーベースの作成

mysql> CREATE DATABASE {db_name};
mysql> SHOW WARNINGS;

データベースへ接続

mysql> USE {db_name};

接続しているデータベースの確認

mysql> SELECT DATABASE();
mysql> SHOW DATABASES;

例)テーブルの作成

CREATE TABLE chart_1d (timestamp INT UNSIGNED NOT NULL UNIQUE, open FLOAT NOT NULL, high FLOAT NOT NULL, low FLOAT NOT NULL, close FLOAT NOT NULL, volume FLOAT NOT NULL);

フィールドの確認

DESCRIBE {table_name};
SELECT * FROM {table_name};

コラムの変更

MariaDB [Binance]> alter table chart_1d change Unixtime timestamp INT UNSIGNED NOT NULL UNIQUE;
MariaDB [Binance]> alter table chart_1d change High high FLOAT NOT NULL;

データベースを削除

mysql> DROP DATABASE {db_name};

テーブルを削除

mysql> DROP TABLE {table_name};

 データベースのセキュリティー設定:

例)テスト

mysql> DELETE FROM mysql.db WHERE Db LIKE 'test%';
mysql> FLUSH PRIVILEGES;
mysql> DROP DATABASE test;

パスワードポリシーの変更

SET GLOBAL validate_password_policy=MEDIUM;

Backup

mysqldump -u root -p {DB name} > {DB name}.sql

Backup:既存のデータベースを上書きする場合

mysqldump -u root -p --add-drop-table {DB name} > {DB name}.sql

Restore

mysql -u root -p {DB name} < {DB name}.sql

CSVファイルのインポート

mysqlimport --ignore-lines=1\
             --fields-terminated-by=,\
             --local -u root -p\
             Binance \
             ${csvfile}