web-dev-qa-db-ja.com

LINUXパスワードのリセット後、ユーザー 'root' @ 'localhost'のアクセスが拒否されました(パスワードを使用:Yes)

LinuxサーバーにMySQLをインストールしました。パスワードを忘れてしまったので、Webで見つけた方法を使用してパスワードを変更しました。私がしたことは次のとおりでした:

/etc/init.d/mysql stop
mysqld_safe --skip-grant-tables &
mysql --user root mysql
SELECT * FROM user; // I checked if I could access the user table or not
update user SET password = PASSWORD('new_pass') WHERE user = 'root';
flush privileges;
exit

更新クエリは、影響を受けた行数やクエリOKなどを表示するため、パスワードを変更しました。

その後、mysqlを再起動しました

/etc/init.d/mysql stop
/etc/init.d/mysql start

今、新しいパスワードでログインしたとき

mysql -u root -p new_pass

それでもエラーが発生します"ERROR 1045(28000):Access denied for user 'root' @ 'localhost'(using password:Yes)"

欠けているものはありますか?

10
progrAmmar

実際、mysqlデータベースのユーザーテーブルを詳しく調べたところ、ユーザーrootのssl_typeフィールドをSSLに編集したことが誰かに分かっていました。

私はそのフィールドを編集し、mysqlを再起動しました。

ありがとう。

0
progrAmmar

この文を実行することでこの問題を解決できました

Sudo dpkg-reconfigure mysql-server-5.5

これにより、ルートパスワードが変更されます。

17
Divz

次の5つの簡単な手順で、MySQLデータベースサーバーのパスワードを回復できます。以下に、各ステップで入力する必要があるコマンドを示します(rootユーザーとしてログインします)。

ステップ#1:mysqlサービスを停止する

/etc/init.d/mysql stop

出力:

Stopping MySQL database server: mysqld.

ステップ#2:パスワードなしでMySQLサーバーを起動します。

mysqld_safe --skip-grant-tables &

出力:

[1] 5988

Starting mysqld daemon with databases from /var/lib/mysql

mysqld_safe[6025]: started

ステップ#3:mysqlクライアントを使用してmysqlサーバーに接続します。

mysql -u root

出力:

Welcome to the MySQL monitor.  Commands end with ; or \g.

Your MySQL connection id is 1 to server version: 4.1.15-Debian_1-log

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql>

ステップ#4:新しいMySQLルートユーザーパスワードのセットアップ

mysql> use mysql;

mysql> update user set password=PASSWORD("NEW-ROOT-PASSWORD") where User='root';

mysql> flush privileges;

mysql> quit

ステップ#5:MySQLサーバーを停止します。

/etc/init.d/mysql stop

出力:

Stopping MySQL database server: mysqld

STOPPING server from pid file /var/run/mysqld/mysqld.pid

mysqld_safe[6186]: ended

[1]+  Done                    mysqld_safe --skip-grant-tables

ステップ#6:MySQLサーバーを起動してテストする

/etc/init.d/mysql start

mysql -u root -p
13
Tell Me How

パスワードをリセットする必要があります! mac osx(テスト済みおよび動作中)およびubuntuの手順

MySQLを停止します

$ Sudo /usr/local/mysql/support-files/mysql.server stop

セーフモードで起動します。

$ Sudo mysqld_safe --skip-grant-tables

(上記の行はコマンド全体です)

これはプロセスが終了するまで継続するコマンドなので、別のシェル/ターミナルウィンドウを開き、パスワードなしでログインします。

$ mysql -u root

mysql> UPDATE mysql.user SET Password=PASSWORD('password') WHERE User='root';

MySQLを起動します

Sudo /usr/local/mysql/support-files/mysql.server start

新しいパスワードは「password」です。

6
tk_

ルートアカウントのplugin列をクリアする必要がある場合があります。新規インストールでは、すべてのルートユーザーアカウントにunix_socketplugin列に設定されます。これにより、システムのルートのみがソケット経由でログインできるため、ルートSQLアカウントがルートUNIXアカウントにのみロックされていました。

もし、あんたが update user set plugin='' where User='root';flush privileges;、これで、任意のlocalhost unixアカウントから(パスワードを使用して)ルートアカウントにログインできるようになります。

このAskUbuntuの質問と回答 を参照してください。

3

@ progrAmmar 私を啓発し、「mysqlデータベースのユーザーテーブルを詳しく調べました」.

私の問題は、ssl_typeではなく、最初のフィールド:Hostではありません。を使用して値を変更しました

update user set Host='localhost' where User='root' and Host='%';

mysqld_safe --skip-grant-tablesモデル。

その後、それはうまく機能します。

3
Belter

同じ問題がありました。 mysql -u root -pと書く必要があります

NOT mysqlまたはmysql -u root -p root_password

3
user3911158

私の場合:

  1. /etc/init.d/mysql stop
  2. mysqld_safe --skip-grant-tables&

(新しいウィンドウ)

  1. mysql -u root
  2. mysql>はmysqlを使用します。
  3. mysql> update user set authentication_string = password( 'password')where user = 'root';
  4. mysql> flush特権;
  5. mysql> quit
  6. /etc/init.d/mysql restart
2
Michal

Mac OSでは、以下の手順に従ってください。

MySQLを停止します

$ Sudo /usr/local/mysql/support-files/mysql.server stopセーフモードで起動します。

$ Sudo mysqld_safe --skip-grant-tables(上記の行はコマンド全体です)

これはプロセスが終了するまで継続するコマンドなので、別のシェル/ターミナルウィンドウを開き、パスワードなしでログインします。

$ mysql -u root

mysql> UPDATE mysql.user SET Password = PASSWORD( 'password')WHERE User = 'root'; MySQLを起動します

Sudo /usr/local/mysql/support-files/mysql.server start新しいパスワードは「password」です。

2
Yang Wang