はじめに
MySQL/MariaDBの初回実行あるあるにハマってしまった上にWindows版なので対応策に一苦労したので、参考にした動画をもとに手順を書きました。
環境
当方の環境は以下で行っております。
OS: Windows10 64bit 21H2
MariaDB: 10.9
サービス名: MariaDB
背景
諸般の事情でWindows版MariaDB(10.9)をインストールすることになり、インストール自体は滞りなく行えたものの、mysql
コマンドを打ってみると
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
と出てしまい、右往左往してしまったことから始まります。
情報を漁ってみると…
というわけで、神様仏様Google様にお願い申し上げたのですが…
LinuxかMacOSXでの話しか無い
しかも、
Windows版MariaDBにはmysqld_safeコマンドなんてねえYO!
というやさぐれてしまいたくなる状態に。
唯一見つかった情報が、以下のYoutubeの動画。
この動画のとおりに実行すると無事にAccess deniedから開放されました。
手順
ここから忘備録です。
1.mysql-init.txtを作ってフルパスを記録
適当なディレクトリにmysql-init.txt
を作成し、以下の内容を記載して保存します。
ALTER USER 'root'@'localhost' IDENTIFIED BY 'password';
今回は、Documentsフォルダに保存しておきます。
フルパスはC:\Users\hoge\Documents\mysql-init.txt
とします。
フルパスをどこかに記録しておきます。
2.MariaDBのmy.iniの場所を確認してフルパスを記録
エクスプローラーなどを使ってmy.ini
の場所を調べます。
場所はインストール時に指定した、データを保存するディレクトリです。
例えば、データが"C:\MariaDB\10.9"にあれば、
C:\MariaDB\10.9\my.ini
がフルパスですので、これをコピーしてどこかに記録しておきます。
3.コマンドプロンプトを管理者権限で開く
MariaDBをインストールした際、Windowsのスタートメニューに「Command Prompt (MariaDB 10.9 (x64))
」という項目があるので、それを右クリックするとポップアップメニューが開きます。その中の、
その他 > 管理者として実行
を選ぶと、管理者権限でコマンドプロンプトが開きます。
(いちいちパスをはらなくてもmysqlコマンドなどが実行できるので便利!)
4.MariaDBのサービスを停止する
動画ではサービスマネージャを使用していますが、コマンドラインのほうが手間いらずです。
先程開いたコマンドプロンプトで以下のコマンドを入力してEnterを押します。
net stop MariaDB
(当方は、サービス名を標準のMariaDB
としています。別の名前にしている場合は、逐次それに置き換えてください)
5.mysqldコマンドを直接実行する
ここが正念場です。落ち着いて。
先程作ったmysql-init.txt
とmy.ini
を指定してmysqldを起動します。
mysqld --defaults-file="C:\MariaDBData\10.9\my.ini" --init-file="C:\Users\hoge\Documents\mysql-init.txt" --console
すると、以下のようなメッセージが現れます。
2022-11-04 10:42:41 0 [Note] mysqld (server 10.9.3-MariaDB) starting as process 2576 ...
2022-11-04 10:42:41 0 [Note] InnoDB: Compressed tables use zlib 1.2.12
2022-11-04 10:42:41 0 [Note] InnoDB: Number of transaction pools: 1
2022-11-04 10:42:41 0 [Note] InnoDB: Using crc32 + pclmulqdq instructions
2022-11-04 10:42:41 0 [Note] InnoDB: Initializing buffer pool, total size = 3.992GiB, chunk size = 63.875MiB
2022-11-04 10:42:41 0 [Note] InnoDB: Completed initialization of buffer pool
2022-11-04 10:42:41 0 [Note] InnoDB: File system buffers for log disabled (block size=512 bytes)
2022-11-04 10:42:41 0 [Note] InnoDB: 128 rollback segments are active.
2022-11-04 10:42:41 0 [Note] InnoDB: Setting file './ibtmp1' size to 12.000MiB. Physically writing the file full; Please wait ...
2022-11-04 10:42:41 0 [Note] InnoDB: File './ibtmp1' size is now 12.000MiB.
2022-11-04 10:42:41 0 [Note] InnoDB: log sequence number 46774; transaction id 14
2022-11-04 10:42:41 0 [Note] Plugin 'FEEDBACK' is disabled.
2022-11-04 10:42:41 0 [Note] InnoDB: Loading buffer pool(s) from M:\MariaDBData\10.9\ib_buffer_pool
2022-11-04 10:42:41 0 [Note] Server socket created on IP: '::'.
2022-11-04 10:42:41 0 [Note] Server socket created on IP: '0.0.0.0'.
2022-11-04 10:42:41 0 [Note] InnoDB: Buffer pool(s) load completed at 221104 10:42:41
2022-11-04 10:42:41 0 [Note] mysqld: ready for connections.
Version: '10.9.3-MariaDB' socket: '' port: 3306 mariadb.org binary distribution
2
ここにエラーメッセージがなければ実行できています。
終了はCtrl-C
を数回叩きます。
万が一、以下のエラーが出た際は、一旦終了してmysql-init.txt
を見直して修正してください。
ERROR: 1105 Bootstrap file error, return code (0). Nearest query: 'ALTER USER (略)
動画では、不要になったmysql-init.txtを削除していますが、再インストールする際に必要になってくると考えて削除せずにそのまま残しています。
6.MariaDBサービスを起動する。
終了していたMariaDBサービスを起動します。
net START MariaDB
7.mysqlコマンドを起動する
これで、問題なくmysql
コマンドを叩けます。
mysql -u root -p
(略)>mysql -u root -p
Enter password: ********
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 3
Server version: 10.9.3-MariaDB mariadb.org binary distribution
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]> exit
無事、起動できました。
おめでとうございます!
最後に
MariaDBをWindowsで動かしている人って少数なのかなぁ…
何はともあれ、良きMariaDBライフを!