私はXubuntu 15.04に取り組んでいます。私はすでにMariaDBサーバーをさまざまなシステムにインストールしていて、インストール中に常にrootパスワードの入力を求められました。しかし今回は、パスワードの入力を求められたのを覚えていません。パスワード(または空白のパスワード)なしでログインしようとすると、Access denied for user 'root'@'localhost'
エラーが発生します。私は完全にパッケージをアンインストールしようとしました
Sudo apt-get remove mariadb-server
Sudo apt-get purge mariadb-server
再インストールしたときに、まだrootパスワードの入力を求められませんでした。
私は mysqlからAccessを修正する方法mysqld --skip-grant-tables
アプローチを試みました 'root' @ 'localhost' を拒否しました。私はmysqlデータベースのrootユーザーのパスワードを変更することができます - 少なくともハッシュ値の変更は - 私はまだmysqlサーバーの再起動後に新しいパスワードでログインすることができません。私はまだ同じエラーが出ます。
ユーザdebian-sys-maintが存在しません。だから、私はそれを使って何かを修正することはできない。
他にどんなアイディアを試すことができますか?
私はこの記事の答えを読んで問題を解決しました:
MySQL(MariaDB)のrootパスワードをリセットできません
すべてのルートに対するmysql.userのプラグインフィールドを空白の文字列に変更する必要があります。
パスワードを再設定する必要があります。そのために
Sudo mysql -u root
use mysql;
update user set plugin='' where User='root';
flush privileges;
exit;
新しい設定の考え方は、パスワードをまったく使用しないことです。詳細については、 UNIX_SOCKET認証プラグイン を参照してください。
Ubuntu 16.04上の/ usr/share/doc/mariadb-server-10.0/README.Debian.gzの内容は特に重要です。
新規インストール時にはrootパスワードは設定されず、debian-sys-maintユーザはもう作成されません。その代わりに、MariaDBルートアカウントは、unixソケットを使用して認証されるように設定されています。 rootまたはSudo経由でmysqldを呼び出すと、ユーザーにmysqldプロンプトが表示されます。
あなたは決してmysqlユーザー "root"を削除することはできません。パスワードは設定されていませんが、unix_authプラグインは、rootユーザーとしてローカルでしか実行できないようにします。
/etc/mysql/debian.cnfの資格情報は、initスクリプトがサーバーを停止してlogrotationを実行するために使用するユーザーを指定します。これはかつてrootとして直接実行することができなくなったdebian-sys-maintユーザーでした。
そのため、rootでそのプラグインを無効にしてパスワードを設定した場合、パスワードなしでrootとしてログインしますが、プラグインを使用していると想定しているため、毎日のcronジョブは失敗します。
後でそれが言う:
スクリプトは、ユーザーが必要な権限を持っていて、unix_socketを介して識別されるように実行する必要があります。
そのため、パスワードをアプリケーションで使用しないようにする必要があります。
私はインストール直後に、このコマンドを実行することによってそれをしました:
$ Sudo mysql_secure_installation
最初のステップでは、パスワードは空白なので、Enterキーを押すだけです。
私はストレッチとラズベリーパイに同じ問題を抱えていた。私の解決策は、次のようにしてすべての権限を持つ新しいユーザーを作成することでした。
Sudo mysqld_safe --skip-grant-tables --skip-networking &
mysql -u root
MariaDB [(none)]> use mysql
MariaDB [mysql]> FLUSH PRIVILEGES;
GRANT ALL privileges ON mysql.* TO 'admin'@'localhost' with grant option;
今私はログインすることができ、私たちにはスーパーユーザーとして "admin"というユーザーがいます。
これが誰かに役立つことを願っています。
Sudo mysql -u root
を使うだけです - それだけです
詳細:新しいバージョンはシステム認証を使ってmysqlを認証します。あなたがOSにSudoできるのであれば、それはあなたもdbのrootであると仮定します。これはSudo mysql -u root -e "USE mysql; SELECT User, Host, plugin FROM mysql.user;"
を発行して確認できます。あなたはこのようなものを見るべきです(おそらく他のディストリビューションのauth_socket
と一緒に)
+------+-----------+-------------+
| User | Host | plugin |
+------+-----------+-------------+
| root | localhost | unix_socket |
+------+-----------+-------------+