MySQL - その他

提供:MochiuWiki : SUSE, EC, PCB
ナビゲーションに移動 検索に移動

概要



rootユーザのパスワードの初期化

MySQLにrootユーザのパスワードを紛失した場合、パスワードを初期化する必要がある。

まず、MySQLを起動して、rootユーザ以外のユーザでログインする。
もし、rootユーザでログインする場合、rootユーザの所有するファイルを作成するため、問題を引き起こす可能性がある。

次に、MySQLのpidファイルの場所を確認する。
pidファイルは、/var/lib/mysqlディレクトリ、/var/run/mysqldディレクトリ、/<MySQLのインストールディレクトリ>/dataディレクトリ等に、mysqld.pidファイルとして保存されている。

新しいrootユーザのパスワードを作成する前に、MySQL(mysqldプロセス)を停止する。

kill $(cat /<MySQLのpidファイルがあるディレクトリ>/mysqld.pid)


次に、rootユーザのパスワード初期化スクリプトを作成する。
ここでは、ホームディレクトリにmysql-initファイルとして保存している。

vi ~/mysql-init


# ~/mysql-initファイル

ALTER USER 'root'@'<ホスト名またはIPアドレス>' IDENTIFIED BY '<新しいrootユーザのパスワード>';


MySQLの再起動と新しいrootのパスワードを適用する。
MySQLの起動方法によっては、他のオプション(--init-fileオプションの前に、--defaults-fileオプション)を付加する必要がある。

mysqld --init-file=/<mysql-initファイルを保存したディレクトリ>/mysql-init &


MySQLにrootユーザでログインして、新しいパスワードが機能することを確認する。

最後に、mysql-initファイルrootユーザのパスワード初期化スクリプトを削除する。

rm ~/mysql-init



複数行のコマンド

MySQLのコマンドラインでは、複数行に渡ってコマンドを記述する方法がいくつか存在する。

  • セミコロンを使用する方法
    MySQLクライアントでは、セミコロン (;) がクエリの終わりを示す。
    そのため、セミコロンを入力するまでは、改行してもクエリが続いているとみなされる。
 GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, PROCESS, 
       REFERENCES, INDEX, ALTER, SHOW DATABASES, CREATE TEMPORARY TABLES, 
       LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, 
       SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, 
       EVENT, TRIGGER 
       ON *.* 
       TO 'hoge'@'localhost' 
       WITH GRANT OPTION;


  • バッククォート (`) を使用する方法
    MySQL 5.7以降では、バッククォートを使用して複数行のステートメントを記述することができる。
 `GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, PROCESS, 
        REFERENCES, INDEX, ALTER, SHOW DATABASES, CREATE TEMPORARY TABLES, LOCK TABLES, 
        EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, 
        CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER 
        ON *.* 
        TO 'hoge'@'localhost' 
        WITH GRANT OPTION`;


  • MySQLクライアント専用コマンドを使用する方法
    MySQLクライアントにおいて、\を行末に使用して複数行のクエリを記述することが可能であるが、デフォルトでは無効になっている。
    有効にする場合は、MySQLクライアントの起動時に--line-numbersオプションを使用する、または、クライアント内でprompt \n->コマンドを実行する。
 -- 改行 (\) を有効にする
 prompt \n->
 
 GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, PROCESS,                  \
       REFERENCES, INDEX, ALTER, SHOW DATABASES, CREATE TEMPORARY TABLES, LOCK TABLES, \
       EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW,         \
       CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT,                              \
       TRIGGER ON *.*        \
       TO 'hoge'@'localhost' \
       WITH GRANT OPTION;
 
 -- 改行 (\) を無効にする (プロンプトを元の状態に戻す)
 prompt mysql>