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

以上

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

上部へスクロール