UbuntuにMySQLをインストールしたもののrootログインでひっかかったので備忘録
※ 本記事にはアフィリエイト広告(Amazonアソシエイト・楽天アフィリエイト等)が含まれています。
UbuntuにMySQLを入れて、いざrootでログインしようとしたら弾かれてしまい、しばらく詰まったので備忘録として残します。この挙動は昔からのものですが、最新のUbuntu(24.04 / 26.04 LTS)や現行のMySQL 8系でも基本的に同じなので、手順を整理し直しました。
結論:sudo を付けてログインする
先に結論です。ターミナルで次を実行したら、あっさりログインできました。
sudo mysql
Windowsやレンタルサーバーの癖で、私はつい mysql -u root -p と打ってパスワードを求められる形を期待していたのですが、これだと Access denied で弾かれます。
なぜ mysql -u root -p では入れないのか
理由は、最近のUbuntuにおけるMySQLの root初期認証方式 にあります。
インストール直後のMySQLでは、root@localhost の認証に auth_socket(MariaDBの場合は unix_socket) というプラグインが使われています。これは「パスワードを照合する」のではなく、「OSにログインしているユーザーがrootか(=sudoで実行しているか)」を見て認証する 仕組みです。
つまり、
mysql -u root -p… パスワードで認証しようとする → そもそもパスワード認証じゃないので弾かれるsudo mysql… OSのroot権限で実行 →auth_socketが「OKこの人はrootだ」と通してくれる
というわけで、sudo を付けるだけで入れた、という話でした。この方式は「rootのパスワードが漏れても、サーバーにログインできなければ悪用できない」という、セキュリティ上むしろ安全な初期設定になっています。
ERROR 1698 (28000): Access denied for user 'root'@'localhost' というエラーが出る場合も、原因はこの auth_socket 方式です。パスワードが間違っているのではなく、認証方式が合っていない、というのがポイントです。
rootにパスワードを設定してログインしたい場合
「どうしてもパスワードでログインしたい」「アプリからrootで接続したい」ときは、認証方式をパスワード方式に切り替えます。まずは sudo mysql で入り、次のように実行します。
ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY '設定したいパスワード';
FLUSH PRIVILEGES;
caching_sha2_password はMySQL 8系の標準的なパスワード認証プラグインです。古いアプリで互換性の問題が出る場合は、代わりに mysql_native_password を指定します。設定できたら抜けます。
EXIT;
sudo mysql 経由の管理作業だけに使うのがおすすめです。
設定を反映(サービス再起動)
設定変更後にMySQLを再起動したい場合、最近のUbuntuは systemd で管理されているので、次のコマンドを使います。
sudo systemctl restart mysql
sudo mysql.server restart と書いていましたが、これはsystemd環境のUbuntuでは基本的に使いません。MySQLなら mysql、MariaDBを使っている場合はサービス名が mariadb になるので sudo systemctl restart mariadb に読み替えてください。
MySQL周りではこの他にも、WordPress用のデータベースを作る場面でrootログインを使います。そちらの流れは「Ubuntu 26.04 LTSにWordPressをインストールする手順」の記事にもまとめているので、あわせてどうぞ。
参考にした公式ドキュメント
- MySQL 8.4 リファレンス:Socket Peer-Credential Pluggable Authentication
- MySQL 8.4 リファレンス:ALTER USER 構文
- MariaDB:Authentication Plugin - Unix Socket
私がこのブログで使っているレンタルサーバーです。公式が「サーバー処理速度 国内No.1」をうたうとおり表示が速く、初期費用は無料。WordPressの簡単セットアップも使えるので、検証用の環境をさっと用意したいときにも便利です。
ConoHa WINGを見てみる