ローカルで作業している場合、データベースにアクセスするためにパスワードを入力する必要はありません。 MySQLを最初にインストールしたときにルートパスワードを変更しましたが、パスワードを元に戻す方法がわかりません。私は何をすべきか?
Rootパスワードをnewpassword
に変更するには:
mysqladmin -u root -p'oldpassword' password 'newpassword'
Rootがパスワードを要求しないように変更するには:
mysqladmin -u root -p'oldpassword' password ''
注:-p
と'oldpassword'
の間にスペースがないことが重要だと思いますが、それについては間違っているかもしれません
パスワードを削除するのではなく(将来そのサーバーを荒野にさらした場合に不快な結果になる可能性があります)、現在のパスワード(およびユーザー名)を~/.my.cnf
(またはおそらくWindowsの同等の場所)は次のようになります。
[client]
user = root
password = s3kr1t
これにより、MySQLは、提供された資格情報を使用して自動ログインする優れた機能を利用できます。
UPDATE mysql.user SET Password=PASSWORD('MyNewPass') WHERE User='root';
FLUSH PRIVILEGES;
参考までに 公式のmysqlドキュメント 。
MySQL 5.7以降、 validate_password プラグインはデフォルトでアクティブになり、空のパスワードを使用できないことに注意してください。
空のパスワードを許可するには、このプラグインを無効にする必要があります。
UNINSTALL PLUGIN validate_password;
SET PASSWORD FOR root@localhost = PASSWORD('');
セキュリティを気にしない限り、 @ wombleのアドバイス に従ってパスワードを使用し、便宜上.my.cnf
ファイルを使用するように注意してください。
このトピックについての私の記事 MySQL rootパスワードの削除 を確認してください!
新しいバージョンでは
UPDATE mysql.user SET authentication_string=PASSWORD('MyNewPass') WHERE User='root'
これでパスワードが削除されます
UPDATE mysql.user SET authentication_string=PASSWORD('') WHERE User='root'
また、インストール時にルートパスワードを作成しました。コマンドを実行したり、ルートとしてアプリを起動したりすると、パスワードなしでデータベースに接続できるため、別のパスワードを使用するよりもはるかに簡単であることを理解してから、UNIX認証を使用するように変更しました。
パスワードを使用してrootとして接続し、実行しました:
ALTER USER 'root'@'localhost' IDENTIFIED BY '';
新しいターミナルをテストして開き、Sudo su
次にmysql
を実行し、パスワードなしで接続するかどうかを確認します(パスワードが設定されている場合は機能しませんでした)。
また、UNIXアカウントと同じユーザー名でMySQLアカウントを作成しましたが、パスワードはありません。ルートアカウントを使用して、必要なテーブルへのアクセスを許可した後、ルートに変更せずにユーザーアカウントからアプリから接続することもできました。 。
これは質問の範囲を超えていますが、次に、一致するMySQLユーザーアカウントを自動的に作成するようにUNIXユーザー作成プロセスをフックする方法を検討します。
MySQLドキュメントでそれを行うための詳細情報とその他の方法 ルートパスワードをリセットする方法