MySQL - その他
ナビゲーションに移動
検索に移動
概要
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>