ローカルWindowsボックスでMySQL 5.xを実行していますが、MySQL管理者を使用して、ルートアカウントを使用して作成したデータベースに接続できません。私が得るエラーは:
MySQLエラー番号1045ユーザー 'root' @ 'localhost'のアクセスが拒否されました(パスワードを使用:YES)
Rootアカウントの資格情報の変更を思い出せませんが、IPを追加して、LAN上の他のコンピューターにdbへのアクセスを許可しようとしたことはわかっています。 IPの1つに対して私がしたことの1つは、アカウントへのアクセスを指定することでした'root'
の代わりにroot
、つまり、ルートを単一引用符で囲みました。 MySQL管理者を使用してすべて。これがルートを使用してログインできない理由ですか?
また、新しいルートアカウントを作成したり、rootアカウントをリセットしたりする方法はありますか?前述のとおり、私は自分のボックスに完全にアクセスできます。
これらの質問を参照してください
Initファイルを使用できます。 MySQLの公式ドキュメントで ルートパスワードをリセットする方法 を確認してください(代替ソリューションのコメントを含む)。
したがって、基本的にはinitファイルを使用して、アクセスを修正するために必要なSQLクエリ(GRAND
、CREATE
、FLUSH PRIVILEGES
など)をinitファイル(任意のファイル)。
これがrootアカウントを回復する私の例です:
echo "CREATE USER 'root'@'localhost' IDENTIFIED BY 'root';" > your_init_file.sql
echo "GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION;" >> your_init_file.sql
echo "FLUSH PRIVILEGES;" >> your_init_file.sql
ファイルを作成したら、次のコマンドを実行できます。
killall mysqld
mysqld_safe --init-file=$PWD/your_init_file.sql
次に、これが機能したかどうかを確認するには、 Ctrl+Z bg
と入力してプロセスをフォアグラウンドからバックグラウンドに実行し、次の方法でアクセスを確認します。
mysql -u root -proot
mysql> show grants;
+-------------------------------------------------------------------------------------------------------------+
| Grants for root@localhost |
+-------------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'root'@'localhost' IDENTIFIED BY PASSWORD '*81F5E21E35407D884A6CD4A731AEBFB6AF209E1B' |
以下も参照してください。
これは私のために働きました:
https://blog.dotkam.com/2007/04/10/mysql-reset-lost-root-password/
ステップ1:MySQLデーモンが現在実行されている場合は停止する
ps -ef | grep mysql - checks if mysql/mysqld is one of the running processes.
pkill mysqld - kills the daemon, if it is running.
ステップ2:許可テーブルをスキップしてMySQL安全デーモンを実行する
mysqld_safe --skip-grant-tables &
mysql -u root mysql
ステップ3:パスワードなしでrootとしてMySQLにログインする
mysql -u root mysql
ステップ4:UPDATEクエリを実行してrootパスワードをリセットする
UPDATE user SET password=PASSWORD("value=42") WHERE user="root";
FLUSH PRIVILEGES;
MySQL 5.7では、「パスワード」フィールドが削除され、フィールド名は「authentication_string」になりました。
UPDATE user SET authentication_string=PASSWORD("42") WHERE
user="root";
FLUSH PRIVILEGES;
ステップ5:MySQLセーフデーモンを停止する
ステップ6:MySQLデーモンを起動する
Rootでmysqlにアクセスすると、同じ問題が発生しました。私が見つけた問題は、一部のデータベースファイルがmysqlサーバーデーモンを起動したユーザーであるmysqlユーザーによる権限を持たないことです。
これをls -l /var/lib/mysql
コマンドで確認できます。mysqlユーザーが一部のファイルまたはディレクトリの読み取りまたは書き込みの権限を持っていない場合、問題が発生する可能性があります。 chown/chmod
コマンドを使用して、これらのファイルまたはディレクトリの所有者またはモードを変更できます。
これらの変更後、mysqldデーモンを再起動し、コマンドを使用してrootでログインします。
mysql -u root
次に、パスワードを変更するか、mysqlにログインするための他のユーザーを作成します。
HTH
MySQLマニュアルには、問題を解決する rootパスワードをリセットする方法 に関するセクションがあります。