Ubuntu(16.04.02)でMariaDB(10.0.29)をセットアップしようとしています。インストールしてプロセス(Sudo service mysql start
)を開始した後、最初にパスワードを空白に設定していても、root
としてログインできません。
つまり、mysql -u root
はアクセスを拒否します。 Sudo mysql
を使用してログインし、ユーザーテーブルを確認しました。 select user, password, authentication_string from mysql.user
および予想どおり:
+---------+----------+-----------------------+
| User | password | authentication_string |
+---------+----------+-----------------------+
| root | | |
+---------+----------+-----------------------+
また、新しいユーザーを作成しました。 create user 'test'@'localhost' identified by '';
およびmysql -u test
(空のパスワード)を実行しようとすると、期待どおりに動作し、ログインします。
ユーザーテーブルは次のようになります。
+---------+----------+-----------------------+
| User | password | authentication_string |
+---------+----------+-----------------------+
| root | | |
| test | | |
+---------+----------+-----------------------+
それで、なぜ私は空のパスワードでroot
としてログインできないのに、test
としてログインできるのか理由を教えてもらえますか?
ネイティブのMariaDBパッケージ(MariaDB自体によって提供されるもの)とは異なり、Ubuntuによってデフォルトで生成されるパッケージには、ローカルルートの nix_socket 認証があります。確認するには、
SELECT user, Host, plugin FROM mysql.user;
plugin
列にunix_socket
が表示されている場合、それが理由です。
通常のパスワード認証に戻るには、次を実行します。
UPDATE mysql.user SET plugin = '' WHERE plugin = 'unix_socket';
FLUSH PRIVILEGES;
(目的に合ったWHERE
句を選択してください。上記は例にすぎません)
私はしばらくの間これに苦労しました。私のUbuntuには、MariaDB(10.0.31)がデフォルトで付属しています。数回再インストールし、プラグインをさまざまな提案に変更した後-私はまだmysqlに正しくログインできませんでした。
最後に、最新のMariaDB(10.2.12)をリポジトリからインストールしました: https://downloads.mariadb.org/mariadb/repositories/
すぐにきちんとログインできました。
あなたが抱えている問題は、MariaDB 10.4の認証システムの変更が原因です。
上記の変更の結果、誰にでも使える強力なrootアカウントがようやくなくなりました。 (...)rootアカウントは安全に自動的に作成されるため。それらは次のように作成されます:CREATE USER root @ localhost IDENTIFIED VIA unix_socket OR mysql_native_password USING 'invalid'
root
として実際にDBにアクセスする場合は、cli _mariadb -p
_を使用してログインし、次を実行する必要があります。
_ALTER USER root@localhost IDENTIFIED VIA mysql_native_password USING PASSWORD("your-password-here");
_
以下の他のソリューションについて:MariaDBではplugin
列も更新できないため、機能しません:ERROR 1348 (HY000): Column 'plugin' is not updatable
。