見出し画像

Ubuntu24&MySQL8のrootの初期パスワードには何が設定されているのか?(MySQL8 root accounts' initial password on Ubuntu24)


English follows:

MySQL8のrootの初期パスワードには何が設定されているのでしょうか?

これが分からず、我々はアマゾンの奥地を2,3時間彷徨う羽目になりました……。

【環境】
・Ubuntu 24.04
・MySQL Server 8.0.38


答えから言っておく。

MySQLのrootアカウントへログインする人が、OSのrootアカウントであるときにログインできるようになっている。パスワードは空。よって、

$ sudo mysql

と打てばログインできる。(終わり)


経緯

いつもはDockerでポンと立ち上げるMySQLだが、今回はサーバのスペックがカツカツだったので、超必死ぶりにローカルに直接インストールしようと思った。

で、Ubuntuなので、apt installして……と進めていき、何事もなくインストールが完了した。

……何事もなく?

MySQLのrootアカウントのパスワード設定する場面が無かったけどぉ?
昔のMySQLはインストールするときにrootのパスワードを設定する画面が出てきたし(いつの話だ)、dockerの場合もrootのパスワードを指定するのに。

まぁとりあえず、

$ mysql -u root

などと打ってみる。


Access denied!


怒られました。

マニュアルを読んでみる。

なんか、インストールのときにrootのパスワードを設定できまっせ!的なことが書いてある。


嘘をつくな。


で、ネットで色々調べてみると、どうやらrootのパスワードは空で設定されているらしい。

ログを見てみると、確かにそのようなことを言っている!

root@localhost is created with an empty password !

でもAccess deniedなんだよな~


……


ここからは色々やった。


マニュアルに載っていたmysql_secure_installationをしてみた、「root のパスワードをリセットする方法」をやってみた。ネットに転がっていたskip-grant-tableからの空パスワードを設定する方法もやってみた。

それで大抵の人はうまくいっているみたいだった。

なぜ俺だけが……と涙がにじむ。

と、ここで、涙でにじんだ視界の中で、rootだけがpluginに見慣れない「auth_socket」というものに設定されていることに気づいた。※--skip-grant-tables オプションを使えば、認証無しでログインできるようになるので、とりあえずテーブルを覗くことはできるようになる。

何じゃこれは?と調べてみると、親切な人が解説していた。

「auth_socketは、MySQLのユーザ名とUbuntuのユーザ名が一致している場合に接続を許可するという認証方式です」


またまたご冗談を


もう台パンしたよね。


マニュアルに書いておけよ!!(そして冒頭の答えへ。)


何はともあれ、アマゾンの奥地から帰還しましたとさ。


(English) Answer:


Password is empty. You need to use root account of OS.


$ sudo mysql


以上


いいなと思ったら応援しよう!