My local environment is:
- Fresh Ubuntu 16.04
- With PHP 7
- With installed MySQL 5.7
sudo apt-get install mysql-common mysql-server
When I tried to login to MySQL (via CLI):
mysql -u root -p
I came across an cyclic issue with 3 steps.
First was some socket issue
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock'
Solution: Restarting PC.
Which led to another error:
With access denied
ERROR 1698 (28000): Access denied for user 'root'@'localhost'.
考えられる問題?
root
ユーザーのパスワードが間違っています。解決:このRackSpaceチュートリアルでルートパスワードをリセットする正しいパスワードと動作するソケットがある場合、最後のエラーが発生します。
認証プラグインが正しくありません
mysql "ERROR 1524 (HY000): Plugin 'unix_socket' is not loaded"
ここで止まったか、どういうわけか再びステップ 1 に戻りました。
ベストアンサー1
解決策が見つかりました!
手順 2) でルート パスワードをリセットするときに、認証プラグインも次のように変更しますmysql_native_password
。
use mysql;
update user set authentication_string=PASSWORD("") where User='root';
update user set plugin="mysql_native_password" where User='root'; # THIS LINE
flush privileges;
quit;
これにより、正常にログインできました。
完全なコードソリューション
1. まず、これらのbashコマンドを実行します
sudo /etc/init.d/mysql stop # stop mysql service
sudo mysqld_safe --skip-grant-tables & # start mysql without password
# enter -> go
mysql -uroot # connect to mysql
2. 次に、mysqlコマンドを実行します => これを手動でCLIにコピーして貼り付けます
use mysql; # use mysql table
update user set authentication_string=PASSWORD("") where User='root'; # update password to nothing
update user set plugin="mysql_native_password" where User='root'; # set password resolving to default mechanism for root user
flush privileges;
quit;
3. さらにbashコマンドを実行する
sudo /etc/init.d/mysql stop
sudo /etc/init.d/mysql start # reset mysql
# try login to database, just press enter at password prompt because your password is now blank
mysql -u root -p
4. ソケットの問題(コメントより)
あなたがソケットエラーが発生した場合、コミュニティから 2 つの解決策が提案されました。
sudo mkdir -p /var/run/mysqld; sudo chown mysql /var/run/mysqld
sudo mysqld_safe --skip-grant-tables &
(@Cerin に感謝)
または
mkdir -p /var/run/mysqld && chown mysql:mysql /var/run/mysqld
(@Peter Dvukhrechensky に感謝)
ブラインドパスとエッジエラーの可能性
localhostの代わりに127.0.0.1を使用する
mysql -uroot # "-hlocalhost" is default
「ファイルが見つかりません」または slt エラーが発生する可能性があります。
mysql -uroot -h127.0.0.1
より良く機能します。
ソケットの問題をスキップする
ファイルを作成したり、アクセス権を変更したり、シンボリックリンクを作成したりする方法をたくさん見つけましたmysqld.sock
。結局、それは問題ではありませんでした。
my.cnf
ファイルをスキップする
問題もありませんでした。よくわからない場合は、これは役に立つかもしれない。