私が持っています Ubuntu 16.04
、Mysql 5.7.12-0ubuntu1.1
。入力すると:
Sudo mysql -u root
Mysqlコンソールにログインできますが、Sudo
なしで入力すると:
mysql -u root
エラーが発生します:
ERROR 1698 (28000): Access denied for user 'root'@'localhost'
MariaDB
をインストールして削除したときに問題が発生しました。私はPostgreSQL
でデータベースへのUNIXユーザーのログインが重要であるのを覚えていますが、これをMysql
でどのように処理するのですか?
私はこの問題を次のように解決しました:
解決策は、ルートmysqlアカウントのパスワードを提供することです(まだ行っていない場合)。表示されるエラーメッセージは、パスワードが必要であり、それを提供していないためです。 rootパスワードをリセットする:
$ mysqladmin -u root password
$ New password:
または、すでにrootパスワードを設定している場合は(疑わしいです。そうしないと、Sudo経由でログインできなくなります)、次のようになります。
$ mysqladmin -u root -p password
Mysqlユーザーは、postgresとは異なり、UNIXユーザーとリンクされていません。
この問題は主に、rootユーザーにパスワードがない場合にデフォルトで使用されるauth_socket
プラグインが原因で発生するようです。 (以前は、apt-getインストールプロセスがrootのパスワードを要求していましたが、そのようになっていないようで、auth_socket
が有効になります。)
どちらのクエリでも、最初にSudo mysql
を使用してrootとしてログインします
MySQLまたはMariaDB> = 10.2の場合:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'test';
MariaDB <10.2(ALTER USER
をサポートしない)を使用している可能性のある他のユーザーは、次のクエリを実行する必要があります。
SET PASSWORD = PASSWORD('test');
update mysql.user set plugin = 'mysql_native_password' where User='root';
FLUSH PRIVILEGES;
サーバーのバージョン:5.7.18-0ubuntu0.16.04.1(Ubuntu)
ステップ1:
server@Server:~$ Sudo -i
ステップ2:
root@Server:~# mysql
出力は次のようになります。
server@Server:~$ Sudo -i
[Sudo] password for server:
root@Server:~# mysql
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 16
Server version: 5.7.18-0ubuntu0.16.04.1 (Ubuntu)
Copyright (c) 2000, 2017, 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.
ステップ3:
mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'Abc123123@';
出力:
Query OK, 0 rows affected (0.00 sec)
以下のコマンドを試してください:
mysql -uroot -p[password]
[password]-mysqlのインストール中に設定したパスワードを入力します。
あなたも試すことができます:
Sudo mysql -uroot -p[password]