TL; DR: mysql / mariadbの新しいバージョンにアクセスするには、ルートユーザーとして、新しいインストール後に、ルートシェルにいる必要があります(つまりsudo mysql -u root
、または最初にmysql -u root
起動したシェルの内部にいる必要があります)。su -
sudo -i
Ubuntuで同じアップグレードを行ったばかりで、同じ問題が発生しました。
奇妙だったのは
sudo /usr/bin/mysql_secure_installation
パスワードを受け入れ、設定を許可しますがroot
、mysql
クライアント経由でログインできませんでした
私はmariadbを
sudo mysqld_safe --skip-grant-tables
他のすべてのユーザーは引き続き問題なくアクセスできますが、ルートとしてアクセスを取得します。
mysql.user
rootでplugin
列が設定されているのに気付いたテーブルを見ると、unix_socket
他のすべてのユーザーは 'mysql_native_password'に設定されています。このページの簡単な説明:https : //mariadb.com/kb/en/mariadb/unix_socket-authentication-plugin/は、Unixソケットがuid
クライアントを実行しているプロセスとユーザーのユーザーのプロセスを一致させることでログインを可能にすることを説明していますmysql.user
テーブル。つまりroot
、rootとしてログインする必要があるため、mariadbにアクセスします。
確かに、必要な認証を使用してmariadbデーモンを再起動します。rootとしてログインできます。
sudo mysql -u root -p
または
sudo su -
mysql -u root -p
これを行ったら、sudoを実行せずにアクセスする方法について考えました。これは、これらのmysqlクエリを実行するだけの問題です。
GRANT ALL PRIVILEGES on *.* to 'root'@'localhost' IDENTIFIED BY '<password>';
FLUSH PRIVILEGES;
(<password>
希望するmysql rootパスワードに置き換えます)。これにより、rootユーザーのログインが有効になります。
または、mysqlクエリを実行します。
UPDATE mysql.user SET plugin = 'mysql_native_password' WHERE user = 'root' AND plugin = 'unix_socket';
FLUSH PRIVILEGES;
パスワードを変更せずにパスワードログインを使用するようにrootアカウントを変更しますが、これにより、mysql / mariadbがrootパスワードなしでインストールされる可能性があります。
これらのいずれかの後、mysql / mariadbを再起動する必要があります。
sudo service mysql restart
出来上がりです。個人アカウントから mysql -u root -p
これを行うとセキュリティが低下することに注意してくださいおそらく、MariaDBの開発者は、正当な理由により、このようなrootアクセスを有効にすることを選択しています。
それについて考えなければならsudo mysql -u root -p
ないのはとてもうれしいので、それに切り替えますが、他に解決策が見つからなかったので、自分の解決策を投稿したいと思いました。