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)"
欠けているものはありますか?
実際、mysqlデータベースのユーザーテーブルを詳しく調べたところ、ユーザーrootのssl_typeフィールドをSSLに編集したことが誰かに分かっていました。
私はそのフィールドを編集し、mysqlを再起動しました。
ありがとう。
この文を実行することでこの問題を解決できました
Sudo dpkg-reconfigure mysql-server-5.5
これにより、ルートパスワードが変更されます。
次の5つの簡単な手順で、MySQLデータベースサーバーのパスワードを回復できます。以下に、各ステップで入力する必要があるコマンドを示します(rootユーザーとしてログインします)。
/etc/init.d/mysql stop
出力:
Stopping MySQL database server: mysqld.
mysqld_safe --skip-grant-tables &
出力:
[1] 5988
Starting mysqld daemon with databases from /var/lib/mysql
mysqld_safe[6025]: started
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>
mysql> use mysql;
mysql> update user set password=PASSWORD("NEW-ROOT-PASSWORD") where User='root';
mysql> flush privileges;
mysql> quit
/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
/etc/init.d/mysql start
mysql -u root -p
パスワードをリセットする必要があります! 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」です。
ルートアカウントのplugin
列をクリアする必要がある場合があります。新規インストールでは、すべてのルートユーザーアカウントにunix_socket
plugin
列に設定されます。これにより、システムのルートのみがソケット経由でログインできるため、ルートSQLアカウントがルートUNIXアカウントにのみロックされていました。
もし、あんたが update user set plugin='' where User='root';flush privileges;
、これで、任意のlocalhost unixアカウントから(パスワードを使用して)ルートアカウントにログインできるようになります。
このAskUbuntuの質問と回答 を参照してください。
@ progrAmmar 私を啓発し、「mysqlデータベースのユーザーテーブルを詳しく調べました」.
私の問題は、ssl_typeではなく、最初のフィールド:Hostではありません。を使用して値を変更しました
update user set Host='localhost' where User='root' and Host='%';
mysqld_safe --skip-grant-tables
モデル。
その後、それはうまく機能します。
同じ問題がありました。 mysql -u root -p
と書く必要があります
NOT mysql
またはmysql -u root -p root_password
私の場合:
(新しいウィンドウ)
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」です。