Linux で mysql の root パスワードを変更する方法のサンプル コードの詳細な紹介

黄舟
リリース: 2017-03-16 13:23:44
オリジナル
1177 人が閲覧しました

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 サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート