解決策を見つけました!
ステップ 2) で root パスワードを再設定する場合、auth プラグインも 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
「missing file」または slt エラーにつながる可能性があります。
mysql -uroot -h127.0.0.1
よりよく機能します。
ソケットの問題をスキップ
mysqld.sock
を作成する多くの方法を見つけました ファイルを変更するか、アクセス権を変更するか、シンボリック リンクを作成します。結局、それは問題ではありませんでした.
my.cnf
をスキップ ファイル
問題もありませんでした。よくわからない場合は、これが役立つかもしれません。
Ubuntu 18.04 および mysql 5.7 の場合
-
ステップ 1:
sudo mkdir /var/run/mysqld;
ステップ 2:
sudo chown mysql /var/run/mysqld
ステップ 3:
sudo mysqld_safe --skip-grant-tables
&quit (行き詰まった場合は quit を使用)
パスワードなしで mysql にログイン
-
ステップ 4:
sudo mysql --user=root mysql
ステップ 5:
SELECT user,authentication_string,plugin,host FROM mysql.user;
ステップ 6:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'root'
今すぐ
でログインmysql -u root -p <root>
次のように試すことができます。
サーバーを起動:
sudo service mysql start
次に、sock フォルダに移動します:
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 &
mysql シェルを初期化します:
mysql -u root
パスワードの変更:
したがって、まずデータベースを選択してください
mysql> use mysql;
次の 2 つのクエリを入力してください:
mysql> update user set authentication_string=password('123456') where user='root';
mysql> update user set plugin="mysql_native_password" where User='root';
これで、すべてがうまくいきます。
mysql> flush privileges;
mysql> quit;
確認用:
mysql -u root -p
N.B, After login please change the password again from phpmyadmin
hostname/phpmyadmin
を確認してください
Username: root
Password: 123456
詳細については、Ubuntu で忘れたパスワード phpmyadmin をリセットする方法を確認してください
mysql
コマンドはデフォルトで UNIX ソケットを使用して MySQL に接続します。
MariaDB を使用している場合は、サーバー側で Unix ソケット認証プラグインをロードする必要があります。
[mysqld]
を編集することでそれを行うことができます このような構成:
[mysqld]
plugin-load-add = auth_socket.so
ディストリビューションにもよりますが、設定ファイルは通常 /etc/mysql/
にあります。 または /usr/local/etc/mysql/
unix_socket=OFF
の場合 が同じセクションに設定されている場合は、unix_socket=ON
に変更して有効にします または、この修正は適用されません。