MysqlPasswordReset に続いてルートパスワードをリセットしようとしていますが、-skip-grant-tablesでサーバーを起動しようとすると、サーバーが起動しません
サーバーが実行されています
$ mysql -u root
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
サーバーを停止
$ Sudo /etc/init.d/mysql stop
[ ok ] Stopping mysql (via systemctl): mysql.service.
--skip-grant-tablesで開始しようとしています
Sudo /usr/sbin/mysqld --skip-grant-tables --skip-networking &
[1] 9856
パスワードなしで接続する
$ mysql -u root
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
[1]+ Exit 1 Sudo /usr/sbin/mysqld --skip-grant-tables --skip-networking
また、mysql_safeで開始しようとしました(error.logは空です)
Sudo mysqld_safe --skip-grant-tables
2017-02-01T16:33:31.382105Z mysqld_safe Logging to syslog.
2017-02-01T16:33:31.383942Z mysqld_safe Logging to '/var/log/mysql/error.log'.
2017-02-01T16:33:31.386058Z mysqld_safe Logging to '/var/log/mysql/error.log'.
2017-02-01T16:33:31.388009Z mysqld_safe Directory '/var/run/mysqld' for UNIX socket file don't exists.
Mysqlサービスが停止するとmysql.sockが削除され、mysqld_safeが作成できない(理由が見つからない)ため、私のソリューションはsockフォルダーをバックアップし、mysqld_safeを開始する前に復元することがわかった
サーバーを起動
$ Sudo service mysql start
靴下フォルダーに移動
$ cd /var/run
靴下をバックアップする
$ Sudo cp -rp ./mysqld ./mysqld.bak
サーバーを停止
$ Sudo service mysql stop
靴下を復元する
$ Sudo mv ./mysqld.bak ./mysqld
Mysqld_safeを起動します
$ Sudo mysqld_safe --skip-grant-tables --skip-networking &
Init mysqlシェル
mysql -u root
パスワードを変更する
FLUSH PRIVILEGES;
SET PASSWORD FOR root@'localhost' = PASSWORD('my_new_password');
pedronalbert's 上記の答えは私にとってはうまくいきましたが、最後のステップは非推奨になり、次の警告がスローされます:
警告| 1287 | 「SET PASSWORD FOR = PASSWORD( '')」は非推奨であり、将来のリリースで削除されます。代わりにSET PASSWORD FOR = ''を使用してください
代わりに次のコマンドを使用してください。
SET PASSWORD FOR root = '<plaintext_password>';
@pedronalbertを含む多くの方法を試しましたが、まだ動作しません。
私が解決した方法は、「skip-grant-tables」を/ etc/my.cnf次にmysqlサービスを開始し、mysqlを "mysql -u root"で https:// www。 codero.com/knowledge-base/content/33/296/en/how-to-reset-your-root-mysql-password.html
私のVM CentOS 7で動作します。