何かをねじ込む前に、$ mysql -u root -p
でログインして、データベースを表示すると
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| game_data |
| test |
+--------------------+
その後、新しいユーザーを作成しようとしたところ、PRIVILEGESがおかしいことに気がつきました
で、新しいユーザーを削除したのですが、うっかり「root」と「Admin」を削除してしまったようです
その後、再び’root’を作成しようとすると、すべての権限を付与する際にAccess deniedエラーが発生します
mysql> CREATE USER 'root'@'localhost' IDENTIFIED BY 'password';
mysql> grant all privileges on *.* to 'root'@'localhost' identified by 'password' with grant option;
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
$ mysql -u root -p
で再度MySQLにログインして、データベースを表示すると、、、
+--------------------+
| Database |
+--------------------+
| information_schema |
+--------------------+
他のデータベースは全て消えています
今すぐMySQLを修正するには?
私はデータベース’mysql’を見つけることができません、データベースを作成することができません、ユーザーを作成し、私は何をしようとすると、エラーが発生します
ERROR 1045 (28000).ユーザー’root’@’localhost’にアクセスが拒否されました
MacPortsを使ってMySQLを再インストールした方がいいのでしょうか?再インストールするとデータベースgame_data
が無くなってしまいますよね?
141 Vogelsire 2013-06-03
以下の手順に従ってください
MySQLサーバインスタンスまたはデーモンを
--skip-grant-tables
オプション(セキュリティ設定)で起動します$ mysqld --skip-grant-tables
これらのステートメントを実行します
$ mysql -u root mysql $mysql> UPDATE user SET Password=PASSWORD('my_password') where USER='root'; $mysql> FLUSH PRIVILEGES;
あなたは上記の不明なフィールドのパスワードエラーに直面している場合は、使用してください
update user set authentication_string=password('my_password') where user='root';
最後に、
--skip-grant-tables
オプションを指定せずにインスタンス/デーモンを再起動します$ /etc/init.d/mysql restart
これで新しいパスワードで接続できるようになるはずです
$ mysql -u root -p
パスワードを入力してください。my_password
MySQL “Unable to lock ibdata1” エラーを修正
sudo mv /usr/local/mysql/data/ibdata1 /usr/local/mysql/data/ibdata1.bak
sudo mv /usr/local/mysql/data/ib_logfile0 /usr/local/mysql/data/ib_logfile0.bak
sudo mv /usr/local/mysql/data/ib_logfile1 /usr/local/mysql/data/ib_logfile1.bak
sudo cp -a /usr/local/mysql/data/ibdata1.bak /usr/local/mysql/data/ibdata1
sudo cp -a /usr/local/mysql/data/ib_logfile0.bak /usr/local/mysql/data/ib_logfile0
sudo cp -a /usr/local/mysql/data/ib_logfile1.bak /usr/local/mysql/data/ib_logfile1
sudo /etc/init.d/mysql restart
145 Yogus 2013-06-03
上記のどれも私には参考になりませんでした。プラグインのメソッドをクリアする必要があることがわかりました。5.6ではできました
sudo mysql -u root
use mysql;
[mysql] update user set plugin='' where User='root';
[mysql] flush privileges;
5.7では、必要なことがわかりました
sudo mysql -u root
use mysql;
[mysql] update user set plugin='mysql_native_password' where User='root';
[mysql] flush privileges;
ドキュメントによると、プラグインが空の文字列に設定されている場合、実質的には mysql_native_password にデフォルトで設定されているはずですが、空のパスワードハッシュで混乱している可能性があります。より多くのニュアンスについては、ここでドキュメントを読むことができます。https://dev.mysql.com/doc/refman/5.7/en/native-authentication-plugin.html
87 Mario Olivio Flores 2016-09-28
また、テーブルuser
に必要なレコードがplugin
フィールドが空であることを確認してください(例えば、"unix_socket"
のような場合もあります)
バージョン5.5.5.7以降のmysqlは、様々なauthプラグインは、https://dev.mysql.com/doc/refman/5.6/en/authentication-plugins.htmlをサポートしています
そのため、もし空でない plugin
フィールドがあれば、パスワードは無視され、mysql のエラーログに警告が表示されます (私の場合は /var/log/mysql/error.log
)
[Warning] 'user' entry 'root@localhost' has both a password and an authentication plugin specified. The password will be ignored.
9 d9k 2016-04-28
grep 'temporary password' /var/log/mysqld.log
Sort date (newest date)
このようなものが表示されるかもしれません
[root@SERVER ~]# grep 'temporary password' /var/log/mysqld.log
2016-01-16T18:07:29.688164Z 1 [Note] A temporary password is generated for root@localhost: O,k5.marHfFu
2016-01-22T13:14:17.974391Z 1 [Note] A temporary password is generated for root@localhost: b5nvIu!jh6ql
2016-01-22T15:35:48.496812Z 1 [Note] A temporary password is generated for root@localhost: (B*=T!uWJ7ws
2016-01-22T15:52:21.088610Z 1 [Note] A temporary password is generated for root@localhost: %tJXK7sytMJV
2016-01-22T16:24:41.384205Z 1 [Note] A temporary password is generated for root@localhost: lslQDvgwr3/S
2016-01-22T22:11:24.772275Z 1 [Note] A temporary password is generated for root@localhost: S4u+J,Rce_0t
[root@SERVER ~]# mysql_secure_installation
MySQLサーバのデプロイメントの安全性を確保する
Enter password for user root:
The existing password for the user account root has expired. Please set a new password.
New password:
Re-enter new password:
もしあなたがそれを見たら
... Failed! Error: Your password does not satisfy the current policy requirements
That means your password needs to have a character such as ! . # - etc...
mix characters well, upper case, lower case, ! . , # etc...
New password:
Re-enter new password:
The 'validate_password' plugin is installed on the server.
The subsequent steps will run with the existing configuration
of the plugin.
Using existing password for root.
Estimated strength of the password: 100
Change the password for root ? ((Press y|Y for Yes, any other key for No) : Y
New password:
Re-enter new password:
Estimated strength of the password: 100
Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : Y
By default, a MySQL installation has an anonymous user,
allowing anyone to log into MySQL without having to have
a user account created for them. This is intended only for
testing, and to make the installation go a bit smoother.
You should remove them before moving into a production
environment.
Remove anonymous users? (Press y|Y for Yes, any other key for No) : Y
Success.
Normally, root should only be allowed to connect from
'localhost'. This ensures that someone cannot guess at
the root password from the network.
Disallow root login remotely? (Press y|Y for Yes, any other key for No) : Y
Success.
By default, MySQL comes with a database named 'test' that
anyone can access. This is also intended only for testing,
and should be removed before moving into a production
environment.
Remove test database and access to it? (Press y|Y for Yes, any other key for No) : Y
- Dropping test database...
Success.
- Removing privileges on test database...
Success.
Reloading the privilege tables will ensure that all changes
made so far will take effect immediately.
Reload privilege tables now? (Press y|Y for Yes, any other key for No) : Y
Success.
All done!
[root@SERVER ~]# mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 11
Server version: 5.7.10 MySQL Community Server (GPL)
このビデオの最後の10分を見て、それはあなたがそれを行う方法を教えています
7 Tadeh 2016-01-22
Try it:
mysql --no-defaults --force --user=root --host=localhost --database=mysql
UPDATE user SET Password=PASSWORD('NEWPASSWORD') where USER='root';
FLUSH PRIVILEGES;
3 Gustavo Duarte 2014-02-21
私の場合、データベースが破損しており、Debian で mysql を再起動した後、root ログインにパスワードがありませんでした。解決策は以下の通りでした
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'test';
他の回答でもnative_passwordプラグインについて言及しているものがありますが、これは複雑ないじくり回しをしなくてもできる方法です。このように変更することを意味しています
3 John 2017-11-10
まず、このように新しいパスワードを設定するSQLファイルを作成します
ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass';
そして、例えば --init-file
パラメータを指定して mysqld を起動します
mysqld --init-file=/home/me/mysql-init &
新しいパスワードが設定されていることを確認したら、新しく起動した mysqld サーバを kill することを忘れないでください
1 sebix 2020-04-17