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
以上