ユーザー作成
MariaDBのインストール後、少し設定をいじったりしました。
まず、rootで実行するのをやめて、MariaDBデーモン実行用に、"maria"というOS Xユーザーを作成しました。
そして、データディレクトリ /var/maria/data をmariaユーザーの所有物に変更。
以下のDB起動シェルを作成しました。
#!/bin/sh export MARIA_HOME=/opt/mariadb pushd ${MARIA_HOME}/bin mysqld_safe --datadir='/var/mariadb/data' & popd
これで、少し簡単に起動できるようになりました。
$ su - maria Password: $ ~/maria_start.sh
今まで、killでDBプロセスを終了していましたが、mysqladmin shutdownでも終了できるみたいです。
$ mysqladmin shutdown -u root -p Enter password:
次に、DB接続(作成)用のMariaDBユーザーを作成します。
$ mysql -u root -p Enter password: MariaDB [(none)]> grant all privileges on *.* to pizza@localhost identified by '********' with grant option;
これで、MariaDBユーザーpizzaでDB接続ができるようになりました。
はまりポイント
①GRANTでユーザーを作成する
DBユーザーの作成は、CREATE USER が一般的なのかな、と思っていましたが、MariaDBでは、GRANTでユーザー作成ができるみたいです。
②ユーザーテーブルは、ユーザー名とホスト名で一意になる
MariaDB [(none)]> desc mysql.user; (省略表記) Field Key Host PRI User PRI
つまり、root@localhost と、root@% は別レコードです。
ここで、Hostは、接続元のホスト名であり、%はワイルドカードです。
%.hatena.ne.jp
のような設定ができます。
ユーザー作成時にホスト名を省略した場合は、% になります。
③%にはlocalhostが含まれない(!)
user_name@%のユーザーを作成しても、localhostからmysqlで接続することができません。
ローカル接続するには、user_name@localhostのユーザーを作成する必要があります。
④権限を直接変更した場合は、FLUSH PRIVILEGES によって再読み込みさせる
権限もmysql.userテーブルで管理されているようです。
このユーザーテーブルを直接UPDATEして権限を変更した場合、
FLUSH PRIVILEGES;
によって権限の再読み込みを命じる必要があるみたいです。
なお、ユーザーを削除するには、ユーザーテーブルからレコードをDELETEで削除すれば良いが、この場合も、
FLUSH PRIVILEGES;
をしておく方が良いです。
GRANT, REVOKEなどで権限を設定した場合は、
FLUSH PRIVILEGES;
する必要はない。(はず、たぶん)