MySQL セットアップ関連
Rev.16を表示中。最新版はこちら。
MySQLのインストールに関するメモ書き。1.インストール後の注意
1. rootにパスワードを設定する。インストール直後は、パスワードが設定されていないので設定する。
2. 匿名ユーザを削除する。
mysql> DELETE FROM mysql.user WHERE user='';
2.デーモン起動と停止
[起動]
# mysqld_safe --user=mysql &
mysqlアカウントは事前に作成しておくこと。/usr/local/var/に書き込み権限がないとpidファイルが作れず、起動できない。デフォルトではエラーログは以下に吐かれる。起動できない場合は、ここを調査。
/usr/local/var/<HostName>.err
pidファイルやエラーログの作成場所を変えるには、--pid-file,--logオプションで指定する。
[停止]
# mysqladmin shutdown
3.ユーザ情報
ユーザ情報はmysqlデータベースのuserテーブルに格納されている。以下のようにして参照可能。# mysql -u root -p mysql
mysql> select * from user;
インストール直後はrootと匿名ユーザ(user欄が空のやつ)が定義されているのが見える。
mysql> select host,user from user;
+-----------------------+-----------+
| host | user |
+-----------------------+-----------+
| localhost | |
| localhost | root |
| localhost.localdomain | |
| localhost.localdomain | root |
+-----------------------+-----------+
現在のセッションで認証されたユーザは以下で取得できる。
mysql> SELECT CURRENT_USER();
◎匿名ユーザ
匿名ユーザは基本的に全権限が抑止されているが、testおよびtest_*データベースに関しては全ての操作を行なえるようになっている。
4.ユーザの追加
全ての権限を持つ'manager'ユーザ(パスワードはsome_pass)を作成する。mysql> GRANT ALL PRIVILEGES ON *.* TO manager@localhost%はワイルドカードで、Unixでいう'*'的なもの。上記の設定だと全てのホストを指す。'%.xxxx.com'のような指定もできる。
IDENTIFIED BY 'some_pass' WITH GRANT OPTION;
mysql> GRANT ALL PRIVILEGES ON *.* TO manager@'%'
IDENTIFIED BY 'some_pass' WITH GRANT OPTION;
'%'で全ホストを指定しているのにlocalhostのエントリも追加しているのに注意。これを追加しないでuserテーブルが以下のような状態になっていた場合、ローカルから接続した場合、ホスト名がlocalhostのエントリにヒットしてしまう。((localhost, )か(localhost,root))ユーザ名が'manager'だと'root'にはマッチしないので(localhost, )にマッチして匿名ユーザでの接続になってしまう。
+-----------------------+-----------+接続時のアカウントのマッチングルールの詳細についてはここを参照。
| host | user |
+-----------------------+-----------+
| % | manager |
| localhost | |
| localhost | root |
| localhost.localdomain | |
| localhost.localdomain | root |
+-----------------------+-----------+
アカウントを削除する場合は権限を削除後、DROP USERで削除する。
manager@localhostを削除する例:
mysql> REVOKE ALL,GRANT OPTION FROM manager@localhost;
mysql> DROP USER manager@localhost;
5.パスワード設定
[SQLから設定する場合]# mysql -u root mysql
mysql> SET PASSWORD FOR
<UserName>=PASSWORD('<Password>');
[シェルから設定する場合]
# mysqladmin -u <UserName> password <Password>
インストール直後、rootユーザにはパスワードがないので設定しておくこと。
Perlからの使用する場合
ライブラリをインストールする。# perl -MCPAN -e shell
cpan> install DBI
cpan> install DBD::mysql
事前にMySQLの共有ライブラリへのパスを設定しておく(デフォルトでは /usr/local/lib/mysql)。これは、PerlのDBD::mysqlモジュールを利用するときに必要になる。 /etc/ld.so.confにエントリを追加して、ldconfigでキャッシュを作成する。
# /sbin/ldconfig