Ubuntuソフトウェアセンターまたはコマンドプロンプト(apt-get install maraidb-server)を使用してUbuntu 15.04リポジトリからmariadbをインストールしましたが、rootユーザーにパスワードは要求されません。パスワードなしでコマンドラインでmysqlに接続できるようになりましたが、Mysql-Workbenchまたはpython mysqldbライブラリを使用して接続すると、「ユーザー 'root' @ 'localhost'のアクセスが拒否されました」メッセージ
Sudo mysql -u root
[mysql] use mysql;
[mysql] update user set plugin='' where User='root';
[mysql] flush privileges;
[mysql] \q
Sudo mysql -u root
[mysql] use mysql;
[mysql] update user set plugin='' where User='root';
[mysql] flush privileges;
[mysql] \q
これには、次のコマンドが続く必要があります
# mysql_secure_installation
localhostからアクセスする場合、rootがパスワードなしでアクセスするのが一般的です。この設定はそのままにしておくことをお勧めします。
また、権限の少ないユーザーを作成し、そのユーザーがリモートでログインできるようにすることもお勧めします。
create user my_admin identified by '12345';
create database my_database;
grant all on my_database.* to my_admin;
これにより、セキュリティが少し強化されます。
ワークベンチなどのツールからルートとして接続する必要がある場合は、これらのツールを設定してsshトンネルを作成し、localhostとしてデータベースに接続できます。
@Pedruが気づいたように、「ユーザー 'root' @ 'localhost'のアクセスは拒否されました」というメッセージは、 DebianおよびUbuntuはデフォルトでUNIX_SOCKET認証プラグインプラグインを有効にする であり、パスワードなしのログインを許可します( 認証プラグイン-Unixソケット )。これはインストールの問題ではありません。
つまり、Linuxシェルで_mysql -u root -p
_と入力すると、root
は実際にはLinuxのルートになります(またはリンクされているため、実際にどのように機能するのかわかりません)。そのため、別のアカウントでLinuxにログオンすると、エラーが発生します:ERROR 1698 (28000): Access denied for user 'root'@'localhost'
。パスワードがまだ定義されていない場合は、_Sudo mysql -u root -p
_または_Sudo mysql -u root
_を入力してください。