無料Wikiサービス | デモページ
Linuxなどのメモ書き
検索

Adsense

MySQL セットアップ関連 の差分
Rev.21→Rev.22  追加箇所 削除箇所


MySQLのインストールに関するメモ書き。

1.インストール後の注意

(1) rootにパスワードを設定する。

インストール直後は、パスワードが設定されていないので設定する。設定方法後述

(2) 匿名ユーザを削除する。

匿名ユーザはtest*データベースに対してしか、操作をできないが一応削除しておいた方がよい。


mysql> DELETE FROM mysql.user WHERE user='';

2.デーモン起動と停止


[起動]


# mysqld_safe --user=mysql &

上記はmysqlというUnixユーザでデーモンを起動する(なんでもよいが、rootだとセキュリティ上まずいので、mysql用にアカウントを用意するのがよい)。起動できない場合は、エラーログを調査する。

エラーログの格納場所はmy.cnfや起動時のオプション(--log)で指定できる。指定していない場合はmysql-data-dir/<ホスト>.err 格納されている自分configure,makeしてインストールして設定していない場合mysql-data-dir/<ホスト>.errmysql_data-dir/usr/local/varなどになっている

起動できないありがちなパターンとしてはpidファイル作成するディレクトリ格納されている権限がなくエラー終了しているケース自分

pidファイル作成場所my.cnfオプション(--pid_file)configure,makeしてインストールして設定していない場合mysql_data-dir/usr/local/varなどになっている指定可能

起動できないありがちなパターンとしてはpidファイル作成するディレクトリ権限がなくエラー終了しているケース
[停止]

pidファイル作成場所my.cnfオプション(--pid_file)指定可能


[停止]


# mysqladmin shutdown

3. サーバーへの接続

サーバーへの接続はmysqlコマンドを使用する。-uで接続時のユーザアカウントを指定する。省略した場合は匿名ユーザでの接続となる。


# mysql -u root
mysql> 
mysql>

パスワードが設定されている場合は、-pオプションをつけて実行してパスワードを入力すればよい。-pがないとパスワードは聞かれず問答無用でエラーとなる。


# mysql -u root -p
Enter password:
mysql> 
Enter password:
mysql>

以下のように、-pの後にスペース開けずにパスワードを指定することもできるが、セキュリティ上あまり望ましくないので止めておいたほうが無難。(psコマンドでみたところパスワード部分はxxでマスクされ見えなくなっていた。ただし、シェルのヒストリには残るので危険。)


# mysql -u root -ppassword
mysql> 
mysql>

4.ユーザ情報

MySQLに設定されているユーザ情報はmysqlデータベースのuserテーブルに格納されている。以下のようにして参照可能。


# mysql -u root -p mysql
mysql> select * from user;
mysql> select * from user;


インストール直後はrootと匿名ユーザ(user欄が空のやつ)が定義されているのが見える。


mysql> select host,user from user;
+-----------------------+-----------+
| host                  | user      |
+-----------------------+-----------+
| localhost             |           |
| localhost             | root      |
| localhost.localdomain |           |
| localhost.localdomain | root      |
+-----------------------+-----------+
+-----------------------+-----------+
| host | user |
+-----------------------+-----------+
| localhost | |
| localhost | root |
| localhost.localdomain | |
| localhost.localdomain | root |
+-----------------------+-----------+


現在のセッションで認証されたユーザは以下で取得できる。


mysql> SELECT CURRENT_USER();

匿名ユーザ

匿名ユーザは基本的に全権限が抑止されているが、testおよびtest_*データベースに関しては全ての操作を行なえるようになっている。

5.ユーザの追加

全ての権限を持つ'manager'ユーザ(パスワードはsome_pass)を作成する。


mysql> GRANT ALL PRIVILEGES ON *.* TO manager@localhost
    IDENTIFIED BY 'some_pass' WITH GRANT OPTION;
mysql> GRANT ALL PRIVILEGES ON *.* TO manager@'%'
    IDENTIFIED BY 'some_pass' WITH GRANT OPTION;
IDENTIFIED BY 'some_pass' WITH GRANT OPTION;
mysql> GRANT ALL PRIVILEGES ON *.* TO manager@'%'
IDENTIFIED BY 'some_pass' WITH GRANT OPTION;

%はワイルドカードで、Unixでいう'*'的なもの。上記の設定だと全てのホストを指す。'%.xxxx.com'のような指定もできる。

'%'で全ホストを指定しているのにlocalhostのエントリも追加しているのに注意。これを追加しないでuserテーブルが以下のような状態になっていた場合、ローカルから接続した場合、ホスト名がlocalhostのエントリにヒットしてしまう。((localhost,)((localhost, )か(localhost,root))ユーザ名が'manager'だと'root'にはマッチしないので(localhost,)(localhost, )にマッチして匿名ユーザでの接続になってしまう


+-----------------------+-----------+
| host                  | user      |
+-----------------------+-----------+
| %                     | manager   |
| localhost             |           |
| localhost             | root      |
| localhost.localdomain |           |
| localhost.localdomain | root      |
+-----------------------+-----------+
| 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;
mysql> DROP USER manager@localhost;

6.パスワード設定

[SQLから設定する場合]


# mysql -u root mysql
mysql> SET PASSWORD FOR
<UserName>=PASSWORD('<Password>');
mysql> SET PASSWORD FOR
<UserName>=PASSWORD('<Password>');



[シェルから設定する場合]


# mysqladmin -u <UserName> password <Password>

インストール直後、rootユーザにはパスワードがないので設定しておくこと。


Perlから使用する場合

PerlスクリプトからMySQLを使用したい場合は、ライブラリをインストールする。

インストール前に以下を確認しておくこと。


(1) インストール時のmaketestmake testでMySQLへの接続を試みるので、MySQLサーバーを立ち上げておくことと(MySQLの)rootのパスワードを外しておく必要がある。

(2)DBD::mysql (2) DBD::mysqlモジュールをインストールする際、MySQLの共有ライブラリを使用するので事前にMySQLの共有ライブラリへのパスを設定しておくこと。

[共有ライブラリパスの設定の仕方]

(i) /etc/ld.so.confにMySQLライブラリのパスを追加。

include ld.so.conf.d/*.conf
/usr/X11R6/lib
/usr/local/lib
/usr/local/lib/mysql 
/usr/X11R6/lib
/usr/local/lib
/usr/local/lib/mysql <== 環境に合わせてパスを追加
(ii) キャッシュを作成。

# /sbin/ldconfig

インストール


# perl -MCPAN -e shell
cpan> install DBI
cpan> install DBD::mysql
cpan> install DBI
cpan> install DBD::mysql