mysql は、linux や Windows で頻繁に使用する必要があるデータベースです。すべてのプログラマーは mysql に精通しているはずですが、時々、脳がショートして、mysql スーパー ユーザー root のパスワードを突然忘れてしまうことがあります。この時点で、新しいパスワードを変更する必要があります。次の記事で Linux での mysql の root パスワードを変更する方法を紹介します。
前書き
サービスを mysql にデプロイしてから数か月が経ったと思います。現在、作業のほとんどはターミナルで行われているため、ほとんどログインしていません。今日、何かを変更したいと思っていたのですが、突然気づきました。 MySQL のパスワードを完全に忘れてしまったので、コードに潜り込み、ようやくビジネス データベースのパスワードを見つけましたが、root パスワードはまだ見つからず、権限も変更できませんでした。そこで、穴を登り始めました。今後も遭遇すると予想されるので、整理して記録しておきます。必要な友達は見に来てください。
システムパラメータ
サーバー
$ cat /proc/version Linux version 4.8.3-x86_64-linode76 (maker@build) (gcc version 4.7.2 (Debian 4.7.2-5) ) #1 SMP Thu Oct 20 19:05:39 EDT 2016 $ lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 16.04.1 LTS Release: 16.04 Codename: xenial
mysql
mysql> show variables like "%version%"; +-------------------------+-------------------------+ | Variable_name | Value | +-------------------------+-------------------------+ | innodb_version | 5.7.16 | | protocol_version | 10 | | slave_type_conversions | | | tls_version | TLSv1,TLSv1.1 | | version | 5.7.16-0ubuntu0.16.04.1 | | version_comment | (Ubuntu) | | version_compile_machine | x86_64 | | version_compile_os | Linux | +-------------------------+-------------------------+
解決策
mysqlをセーフモードで起動する、root として直接ログインし、パスワードをリセットできます。具体的な手順は次のとおりです
実行中の MySQL サービスを停止します:
sudo service mysql stop
mysql をセーフ モードで起動します:
sudo mysqld_safe --skip-grant-tables --skip-networking &
root で直接ログインします。パスワードは必要ありません:
mysql -u root
パスワードをリセットします:
mysql> use mysql; mysql> update user set authentication_string=password('password') where user='root'; mysql> flush privileges;
終了mysql
mysql > quit
mysql を再起動します
sudo service mysql restart
パスワード ログイン:
mysql -u root -p
パスワード変更エラー、プロンプト ERROR 1054 (42S22)
パスワードを変更すると、インターネットはプロンプトを入力してください変更するコマンド:
mysql> update user set password=PASSWORD("password") where User='root';
このコマンドを使用すると結果がエラーになります:
ERROR 1054 (42S22): Unknown column 'password' in 'field list'
その理由は、mysql 5.7 以降、パスワード フィールドが authentication_string に置き換えられるためです。次のコマンドを使用して
update user set authentication_string=password('password') where user='root';
を変更できます。パスワードを変更した後、mysql にログインできませんでした。エラー 2002 (HY000)
が表示されます。パスワードを変更して再起動すると、mysql にログインできません。プロンプト
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
search が報告されます。複数のバージョンの mysql をインストールしたため、次のコマンドを順番に実行して問題を解決します。
実行中のmysqlを表示
ps -A|grep mysql
実行中のmysqlを強制終了
sudo pkill mysql
実行中のmysqldを表示
ps -A|grep mysqld
実行中のmysqldを強制終了
sudo pkill mysqld
mysqlを再起動
service mysql restart
mysqlにログイン
mysql -u root -p
概要
以上がLinux で mysql の root パスワードを変更する方法のサンプル コードの詳細な紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。