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

エラー 1698 (28000): ユーザー 'root'@'localhost' のアクセスが拒否されました
alhelal@VimLaTeX:~$ mysql -u root -p
Enter password: 
ERROR 1698 (28000): Access denied for user 'root'@'localhost'
alhelal@VimLaTeX:~$ sudo mysql -u root -p
[sudo] password for alhelal: 
Enter password: 
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 35
Server version: 10.1.29-MariaDB-6 Ubuntu 18.04

Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others.

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

MariaDB [(none)]>   

なぜ mariadb は、通常の ubuntu ユーザーが mysql ルートユーザーとして mysql に入ることを許可しないのですか?

私も試してみましたエラー 1698 (28000): Ubuntu 18.04 でユーザー 'root'@'localhost' のアクセスが拒否されましたしかし失敗した?

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'test'' at line 1

答え1

によるとこの答えauth_socketSO によると、ルート ユーザーがUbuntu 上の MySQL/MariaDB でデフォルトで使用されるプラグインを使用していることが原因である可能性があります。

$ sudo mysql -u root

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

+------------------+-----------------------+
| User             | plugin                |
+------------------+-----------------------+
| root             | auth_socket           |
+------------------+-----------------------+

これを に変更すると、以下をmysql_native_password必要とせずに接続できるようになりますsudo

$ sudo mysql -u root

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

$ service mysql restart

関連情報