ユーザー作成

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;
する必要はない。(はず、たぶん)