web-dev-qa-db-ja.com

エラー1698(28000):ユーザー 'root' @ 'localhost'のアクセスが拒否されました

だから...私は新しいサーバーをセットアップして、この問題に遭遇し続けます。

RootユーザーでMySQLデータベースにログインしようとすると、 "ERROR 1698(28000):ユーザー 'root' @ 'localhost'のアクセスが拒否されました"というエラーが表示されます。

PHPMyAdminまたはMySQLクライアントを介して端末(SSH)を介して接続しても、問題ありません。ナビカット。それらはすべて失敗します。

Mysql.userテーブルを調べたところ、次のようになりました。

+------------------+-------------------+
| user             | Host              |
+------------------+-------------------+
| root             | %                 |
| root             | 127.0.0.1         |
| amavisd          | localhost         |
| debian-sys-maint | localhost         |
| iredadmin        | localhost         |
| iredapd          | localhost         |
| mysql.sys        | localhost         |
| phpmyadmin       | localhost         |
| root             | localhost         |
| roundcube        | localhost         |
| vmail            | localhost         |
| vmailadmin       | localhost         |
| amavisd          | test4.folkmann.it |
| iredadmin        | test4.folkmann.it |
| iredapd          | test4.folkmann.it |
| roundcube        | test4.folkmann.it |
| vmail            | test4.folkmann.it |
| vmailadmin       | test4.folkmann.it |
+------------------+-------------------+

ご覧のとおり、rootにアクセス権があるはずです。

私はしばらくの間これをトラブルシューティングしようとしたように、サーバーは非常に簡単です..

Ubuntu 16.04.1 LTSをApache、MySQL、およびPHPで実行しているため、Webサイトをホストでき、iRedMail 0.9.5-1を使用してメールをホストできます。

IRedMailをインストールする前に、MySQLデータベースにログインしても問題ありません。私も試してみました、ただiRedMailをインストールしましたが、それからルート、また動作しません...

MySQLのログイン問題を解決する方法、またはiRedMailをインストールする方法を、既存のMySQLインストールに加えて誰かに教えてもらえたら。そしてはい、私は インストールのヒント を試してみました、そして私は設定ファイルでそれらの変数を見つけることができません。

どんな助けでも大歓迎です:)

209
Folkmann

Ubuntuなどの一部のシステムでは、mysqlはデフォルトで NIX auth_socketプラグイン を使用しています。

基本的には、db_usersを使用すると、システムユーザー資格によって「auth」になります。rootユーザーが次のように設定されているかどうかを確認できます。

$ Sudo mysql -u root # I had to use "Sudo" since is new installation

mysql> USE mysql;
mysql> SELECT User, Host, plugin FROM mysql.user;

+------------------+-----------------------+
| User             | plugin                |
+------------------+-----------------------+
| root             | auth_socket           |
| mysql.sys        | mysql_native_password |
| debian-sys-maint | mysql_native_password |
+------------------+-----------------------+

クエリでわかるように、rootユーザーはauth_socketプラグインを使用しています

これを解決するには2つの方法があります。

  1. mysql_native_passwordプラグインを使用するようにrootユーザーを設定できます
  2. 新しいdb_userを作成できますsystem_user(推奨)

オプション1:

$ Sudo mysql -u root # I had to use "Sudo" since is new installation

mysql> USE mysql;
mysql> UPDATE user SET plugin='mysql_native_password' WHERE User='root';
mysql> FLUSH PRIVILEGES;
mysql> exit;

$ service mysql restart

オプション2:(YOUR_SYSTEM_USERをユーザー名に置き換えます)

$ Sudo mysql -u root # I had to use "Sudo" since is new installation

mysql> USE mysql;
mysql> CREATE USER 'YOUR_SYSTEM_USER'@'localhost' IDENTIFIED BY '';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'YOUR_SYSTEM_USER'@'localhost';
mysql> UPDATE user SET plugin='auth_socket' WHERE User='YOUR_SYSTEM_USER';
mysql> FLUSH PRIVILEGES;
mysql> exit;

$ service mysql restart

オプション#2を使用する場合は、システムユーザー名(mysql -u YOUR_SYSTEM_USER)としてmysqlに接続する必要があることに注意してください

注:一部のシステム(Debianストレッチなど)では、 'auth_socket'プラグインは 'unix_socket' と呼ばれるため、対応するSQLコマンドはUPDATE user SET plugin='unix_socket' WHERE User='YOUR_SYSTEM_USER';である必要があります

Update:@andyのコメントからmysql 8.xxがauth_socketcaching_sha2_passwordに更新/置換したようですこれをテストするためのmysql 8.xxを使用したシステムセットアップ。ただし、上記の手順は問題の理解に役立ちます。返信は次のとおりです。

MySQL 8.0.4での1つの変更は、新しいデフォルト認証プラグインが「caching_sha2_password」であることです。新しい「YOUR_SYSTEM_USER」にはこの認証プラグインがあり、「mysql -u YOUR_SYSTEM_USER -p」を使用してbashシェルからログインし、プロンプトでこのユーザーのパスワードを入力できます。 「UPDATE user SET plugin」ステップは不要です。 8.0.4のデフォルトの認証プラグインの更新については、 https://mysqlserverteam.com/mysql-8-0-4-new-default-authentication-plugin-caching_sha2_password/を参照してください

807
zetacu

ここでチェックしてください:

MYSQLの新バージョンはこのようにしています。

新しい my-sql では、インストール中にパスワードが空のままになっている場合、それはauth_socketプラグインに基づきます。

正しい方法は、Sudo特権でmy-sqlにログインすることです。

$ Sudo mysql -u root -p

そして、次のようにしてパスワードを更新します。

$ ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'new-password';

これが完了したら、mysqlサーバーをstop and startします。

$  Sudo service mysql stop
$  Sudo service mysql start

詳細については このリンク を参照してください。

疑問があればコメントしてください。

71
Nandesh

私はMySQL接続を削除することをお勧めします -

UPDATE - これはMysqlバージョン5.5用です、あなたのバージョンが異なる場合は、それに応じて最初の行を変更してください

Sudo apt-get purge mysql-server mysql-client mysql-common mysql-server-core-5.5 mysql-client-core-5.5
Sudo rm -rf /etc/mysql /var/lib/mysql
Sudo apt-get autoremove
Sudo apt-get autoclean

そして再度インストールしてくださいしかし今回は自分でrootのパスワードを設定します。これは多くの労力を節約します。

Sudo apt-get update
Sudo apt-get install mysql-server
7
Eminem347

私は私のWindows 10デスクトップ上のPuTTYを通して対話していたDebian 8 VMでこの問題を抱えていました。

私はここで様々な提案を試しましたが、何もうまくいきませんでした。そしてDebianホスト上でMariaDBを実行しています。結局、私はdbサーバをセーフモードで起動することはできませんでしたが、次のコマンドは実際にはうまくいきませんでした。

Sudo service mysql restart
Sudo mysql # logs in automatically into MariaDB
use mysql;
update user set plugin='' where user='your_user_name';
flush privileges;
exit;
Sudo service mysql restart # restarts the mysql service

上記の方法でうまくいかない場合は、上記のzetacuの投稿( zetacu )に概説されている手順に従ってから、私の手順に従ってください。

これで、リモートターミナルクライアントを使用して、次のコマンドを使用してmysqlに安全にログインできるはずです。

mysql -u your_user_name -p

*プロンプトが表示されたらパスワードを入力します。

6
Tahir Khalid

私も初めて同じ問題に直面しました。

現在は修正されています。

まず、/etc/mysql/mysql.conf.d/mysqld.cnfファイルをコピーして、/etc/mysql/my.cnfに貼り付けます。

コマンドで実行できます:

Sudo cp /etc/mysql/mysql.conf.d/mysqld.cnf /etc/mysql/my.cnf

それでは、パスワードをリセットしましょう。

端末で次のコマンドを使用します。

Sudo service mysql stop 
Sudo service mysql start
Sudo mysql -u root

これで、mysqlコンソールの内部にいます。

次に、ルートパスワードをリセットするクエリを作成しましょう。

USE mysql
update mysql.user set authentication_string=password('newpass') where user='root' and Host ='localhost';
update user set plugin="mysql_native_password"; 
flush privileges;
quit

これで/etc/mysql/my.cngをクリーニングできます

上記のファイルをエディターで開き、ファイル内の行全体を削除します。

その後、mysqlを再起動します。

Sudo mysql service restart 

次に、新しく作成したパスワードでmysqlを使用します。

Sudo mysql -u root -p

最後に、新しく作成したパスワードを入力します。

1

RootユーザーでMySQLにアクセスしたいのですが、rootの正しいパスワードを入力していません。

root に新しいパスワードを設定する必要がある場合、MySQLのサイトにはその方法に関する優れたドキュメントがあります。 http://dev.mysql.com/doc/refman/5.7/ja/resetting- permissions.html

ここにはプロセスを表示しません なぜなら MySqlのドキュメント 上記のリンクの それは明確で簡潔です .

1

それ 私のために働いた:

mysql --user=root mysql
CREATE USER 'some_user'@'%' IDENTIFIED BY 'some_pass';
GRANT ALL PRIVILEGES ON *.* TO 'some_user'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
1
Dorad

ステップ1。Sudo mysql -u root -p

ステップ2. USE mysql;

ステップ3. ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'admin';

ここで 'admin'はあなたの新しいパスワードです、あなたはそれを変更することができます。

ステップ4. exit

ありがとう。これで終わりです。

1

最初のステップ:/etc/phpmyadmin/config.inc.phpに行き、AllowNoPasswordがある行のコメントを外します。第二段階:mysqlのデフォルトアカウントにログインする

mysql -u root -p
use mysql;
update user set plugin="" where user='root';
flush privilege;

そしてそれだけです!

0
Ángel Ugarte

os:Ubuntu 18.04

mySQL:5.7

  1. mysqld.cnfのファイル末尾にskip-grant-tablesを追加します。

  2. my.cnfのcp

Sudo cp /etc/mysql/mysql.conf.d/mysqld.cnf /etc/mysql/my.cnf
  1. パスワードをリセットする
(base) ➜  ~ Sudo service mysql stop 
(base) ➜  ~ Sudo service mysql start
(base) ➜  ~ mysql -uroot
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.25-0ubuntu0.18.04.2 (Ubuntu)

Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> use mysql
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed, 3 warnings
mysql> update mysql.user set authentication_string=password('newpass') where user='root' and Host ='localhost';
Query OK, 1 row affected, 1 warning (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 1

mysql> update user set plugin="mysql_native_password"; 
Query OK, 0 rows affected (0.00 sec)
Rows matched: 4  Changed: 0  Warnings: 0

mysql>  flush privileges;
Query OK, 0 rows affected (0.00 sec)

mysql> quit
Bye
  1. my.cnfからtheskip-grant-tablesを削除します。
(base) ➜  ~ Sudo emacs /etc/mysql/mysql.conf.d/mysqld.cnf 
(base) ➜  ~ Sudo emacs /etc/mysql/my.cnf                 
(base) ➜  ~ Sudo service mysql restart

  1. mySQLを開く
(base) ➜  ~ mysql -uroot -ppassword 
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.7.25-0ubuntu0.18.04.2 (Ubuntu)

Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> 
  1. パスワードポリシーを確認してください
mysql> select @@validate_password_policy;
+----------------------------+
| @@validate_password_policy |
+----------------------------+
| MEDIUM                     |
+----------------------------+
1 row in set (0.00 sec)


mysql> SHOW VARIABLES LIKE 'validate_password%';
+--------------------------------------+--------+
| Variable_name                        | Value  |
+--------------------------------------+--------+
| validate_password_dictionary_file    |        |
| validate_password_length             | 8      |
| validate_password_mixed_case_count   | 1      |
| validate_password_number_count       | 1      |
| validate_password_policy             | MEDIUM |
| validate_password_special_char_count | 1      |
+--------------------------------------+--------+
6 rows in set (0.08 sec)!
  1. validate_passwordの設定を変更する
mysql> set global validate_password_policy=0;
Query OK, 0 rows affected (0.05 sec)

mysql> set global validate_password_mixed_case_count=0;
Query OK, 0 rows affected (0.00 sec)

mysql> set global validate_password_number_count=3;
Query OK, 0 rows affected (0.00 sec)

mysql> set global validate_password_special_char_count=0;
Query OK, 0 rows affected (0.00 sec)

mysql> set global validate_password_length=3;
Query OK, 0 rows affected (0.00 sec)

mysql> SHOW VARIABLES LIKE 'validate_password%';
+--------------------------------------+-------+
| Variable_name                        | Value |
+--------------------------------------+-------+
| validate_password_dictionary_file    |       |
| validate_password_length             | 3     |
| validate_password_mixed_case_count   | 0     |
| validate_password_number_count       | 3     |
| validate_password_policy             | LOW   |
| validate_password_special_char_count | 0     |
+--------------------------------------+-------+
6 rows in set (0.00 sec)

note 何が原因でエラーが発生したのでしょうか。 validate_password_policy?

あなたは、パスワードをリセットしてポリシーを埋めるか、ポリシーを変更することを決定するべきです。

0
iamcxl

これは私にも起こりました。問題は、すでにLinuxディストリビューションに付属しているmysqlリポジトリにあります。それであなたが単にするとき:$ Sudo apt install mysql-serverそれはこの問題を与えるデフォルトレポジトリからmysqlをインストールします。それでそれを克服するためにあなたはそのインストールされたmysqlをアンインストールする必要があります$ Sudo apt remove mysql* --purge --auto-remove

それから公式のmysqlウェブサイトからmysqlリポジトリをダウンロードしてください MySQL APTリポジトリ リポジトリを追加してインストールする方法については彼らのドキュメントに従ってください。これは問題ありません。また、@ zetacuが回答したように、mysql rootが実際にmysql_native_passwordプラグインを使用していることを確認できます。

0
sudip