だから...私は新しいサーバーをセットアップして、この問題に遭遇し続けます。
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インストールに加えて誰かに教えてもらえたら。そしてはい、私は インストールのヒント を試してみました、そして私は設定ファイルでそれらの変数を見つけることができません。
どんな助けでも大歓迎です:)
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つの方法があります。
mysql_native_password
プラグインを使用するようにrootユーザーを設定できます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_socket
をcaching_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/を参照してください
ここでチェックしてください:
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
詳細については このリンク を参照してください。
疑問があればコメントしてください。
私は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
私は私の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
*プロンプトが表示されたらパスワードを入力します。
私も初めて同じ問題に直面しました。
現在は修正されています。
まず、/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
最後に、新しく作成したパスワードを入力します。
RootユーザーでMySQLにアクセスしたいのですが、rootの正しいパスワードを入力していません。
root に新しいパスワードを設定する必要がある場合、MySQLのサイトにはその方法に関する優れたドキュメントがあります。 http://dev.mysql.com/doc/refman/5.7/ja/resetting- permissions.html
ここにはプロセスを表示しません なぜなら MySqlのドキュメント 上記のリンクの それは明確で簡潔です .
それ 私のために働いた:
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。Sudo mysql -u root -p
ステップ2. USE mysql;
ステップ3. ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'admin';
ここで 'admin'はあなたの新しいパスワードです、あなたはそれを変更することができます。
ステップ4. exit
ありがとう。これで終わりです。
最初のステップ:/etc/phpmyadmin/config.inc.phpに行き、AllowNoPasswordがある行のコメントを外します。第二段階:mysqlのデフォルトアカウントにログインする
mysql -u root -p
use mysql;
update user set plugin="" where user='root';
flush privilege;
そしてそれだけです!
os:Ubuntu 18.04
mySQL:5.7
mysqld.cnfのファイル末尾にskip-grant-tables
を追加します。
my.cnfのcp
Sudo cp /etc/mysql/mysql.conf.d/mysqld.cnf /etc/mysql/my.cnf
(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
skip-grant-tables
を削除します。(base) ➜ ~ Sudo emacs /etc/mysql/mysql.conf.d/mysqld.cnf
(base) ➜ ~ Sudo emacs /etc/mysql/my.cnf
(base) ➜ ~ Sudo service mysql restart
(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>
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)!
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?
あなたは、パスワードをリセットしてポリシーを埋めるか、ポリシーを変更することを決定するべきです。
これは私にも起こりました。問題は、すでに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プラグインを使用していることを確認できます。