このドキュメントでは、MySQL のインストール、構成、管理に関する一般的な問題のソリューションを提供し、安定したサーバーの維持を支援します。
MySQL ユーザーパスワードを忘れた場合
root 以外のユーザーのパスワードを忘れた場合は、root ユーザーを使用して直接変更できます。root ユーザーのパスワードを忘れた場合は、MySQL サービスを停止し、権限チェックをバイパスする特別なモードで再起動する必要があります。これにより、パスワードをリセットできます。
root 以外のユーザーのパスワードを忘れた場合
-
対象ユーザーの
Host値をクエリします。# 実際のユーザー名に置き換えてください mysql -uroot -p -e "SELECT Host FROM mysql.user WHERE User = 'target_username';" -
Host値に基づいてパスワードを変更します。ユーザーに複数のHost値がある場合は、それぞれの値に対してコマンドを実行する必要があります。# 実際のユーザー名、パスワード、Host に置き換えてください mysql -uroot -p -e "ALTER USER 'target_username'@'target_host' IDENTIFIED BY 'new_password'; FLUSH PRIVILEGES;"
root ユーザーのパスワードを忘れた場合
root ユーザーのパスワードをリセットするには、MySQL サービスを停止する必要があります。
-
MySQL サービスを停止するには、次のコマンドを実行します。
Alibaba Cloud Linux と CentOS
sudo systemctl stop mysqldUbuntu と Debian
sudo systemctl stop mysql -
MySQL を一時的なモードで起動し、プロセス ID をメモします。後でプロセスを終了するためにこの ID が必要になります。
説明-
--skip-grant-tables:権限検証をバイパスし、パスワードなしでログインできるようにします。 -
&:MySQL プロセスをバックグラウンドで実行します。ターミナルはプロセス ID (PID) を返します。たとえば、出力[1] 1234の場合、PID は1234です。
sudo -u mysql mysqld --skip-grant-tables & -
-
権限テーブルをリロードし、root パスワードを変更します。
<password>を新しいパスワードに置き換えてください。パスワードは、現在のパスワードポリシーに準拠する必要があります:長さが 8 文字以上で、大文字、小文字、数字、特殊文字がそれぞれ 1 つ以上含まれている必要があります。mysql -uroot -e"FLUSH PRIVILEGES;" -e"ALTER USER 'root'@'localhost' IDENTIFIED BY '<password>';"エラー
Your password does not satisfy the current policy requirementsが表示された場合、パスワードはポリシーに準拠していません。MySQL プロセスを終了し、権限バイパスモードで再起動してから、準拠したパスワードでコマンドを再実行する必要があります。 -
MySQL プロセスを終了します。
kill <process ID> -
MySQL サービスを起動するには、次のコマンドを実行します。
Alibaba Cloud Linux と CentOS
sudo systemctl start mysqldUbuntu と Debian
sudo systemctl start mysql -
新しいパスワードでログインします。MySQL コマンドラインにアクセスできれば、パスワードのリセットは成功です。
mysql -u root -p
MySQL データディレクトリの変更
-
MySQL サービスを停止するには、次のコマンドを実行します。
Alibaba Cloud Linux と CentOS
sudo systemctl stop mysqldUbuntu と Debian
sudo systemctl stop mysql -
my.cnf設定ファイル (通常は/etc/my.cnfにあります) で、datadirの値を新しいデータディレクトリのパスに変更します。datadir=/new/data/directory -
元のデータディレクトリからすべてのファイルとディレクトリを新しいデータディレクトリにコピーします。
sudo cp -aR /old/data/directory/* /new/data/directory/ -
MySQL サービスを起動するには、次のコマンドを実行します。
Alibaba Cloud Linux と CentOS
sudo systemctl start mysqldUbuntu と Debian
sudo systemctl start mysql
MySQL 起動エラー:Permission denied
-
MySQL の
error.logファイルをチェックして、特定のエラーメッセージを確認します。説明このファイルのデフォルトの場所は、通常
/var/log/mysqld.logまたは/var/log/mysql/error.logです。[ERROR] [MY-010092] [Server] Can't start server: can't create PID file: Permission denied -
残留している
mysqldプロセスを見つけて終了します。sudo ps aux | grep mysqld sudo kill -9 <process ID> -
MySQL サービスを起動するには、次のコマンドを実行します。
Alibaba Cloud Linux と CentOS
sudo systemctl start mysqldUbuntu と Debian
sudo systemctl start mysql
MySQL 起動エラー:File './binlog.index' not found
-
MySQL の
error.logファイルをチェックして、特定のエラーメッセージを確認します。説明このファイルのデフォルトの場所は、通常
/var/log/mysqld.logまたは/var/log/mysql/error.logです。mysqld: File './binlog.index' not found (OS errno 13 - Permission denied) -
このエラーは、多くの場合、MySQL データディレクトリ内のファイルの所有権が正しくないことが原因です。次のコマンドを実行して、所有権を確認します。
説明デフォルトのデータディレクトリは通常
/var/lib/mysqlです。カスタムデータディレクトリを使用している場合は、それに応じてコマンドを修正してください。sudo ls -l /var/lib/mysql-rw-r----- 1 root root 56 Mar 19 15:51 auto.cnf -rw-r----- 1 root root 1551 Mar 19 15:51 binlog.000001 -rw-r----- 1 root root 16 Mar 19 15:51 binlog.index -rw------- 1 root root 1680 Mar 19 15:51 ca-key.pem -rw-r--r-- 1 root root 1108 Mar 19 15:51 ca.pem -rw-r--r-- 1 root root 1108 Mar 19 15:51 client-cert.pem -
次のコマンドを実行して、
mysqlユーザーおよびグループに正しい所有権を割り当てます。sudo chown -R mysql:mysql <data_directory> -
MySQL サービスを起動するには、次のコマンドを実行します。
Alibaba Cloud Linux と CentOS
sudo systemctl start mysqldUbuntu と Debian
sudo systemctl start mysql