二、三分でMySQLを使えるようにする。
エッセンスだけ書く。
ちなみにUbuntuユーザーターゲットに書いている(検証環境はLubuntu)
MySQLのインストール
端末からインストールを開始
sudo apt-get install mysql-server
インストールの途中でこんな画面が出てくるので、パスワードを設定する。
初期設定
文字コードの設定
MySQLは初期設定だとLatin1という文字コードで、そのままだと文字化けする可能性があるので
文字コードをUTF-8に変える。
/etc/my.cnfファイルを設定しよう。
だが、僕の環境には無いので探してみたら、
/etc/mysql/my.cnfにあった。
設定ファイルを編集する。
vi /etc/mysql/my.cnf
clientとmysqldの下辺りに、utf8についてのプロパティをコピペする。
[client] default-character-set = utf8 [mysqld] character-set-server = utf8
MySQLを起動する。
sudo service mysql start
起動後はログインをする。
mysql -u root -pPASSWORD
PASSWORDはインストール時に決めたパスワードを入れる。
-pとの間にスペースを入れないで入力しないとログインでいない。
MySQLにログインできたら、以下のSQLで確認
show variables like 'char%';
このようにcharacter_set _filessystemとcharacter_sets_dir以外がutf8になっていたら成功!
ネットワーク越しに接続できるようにする
初期設定だと、ネットワーク越しにMySQLに接続できない。
同じサーバー内にアプリケーションがアレばいいけれど、
クライアントとMySQLが別のマシンだとこの設定をしなければならない。
先ほどの文字コードを設定したmy.cnfファイルのbind-addressに接続したいIPを設定する。
vi /etc/mysql/my.cnf
接続したいIPを設定する。
127.0.0.1はローカルIP
bind-address = 127.0.0.1 bind-address = 192.168.0.3
もしくは、どこからでもアクセスさせるようにしたければ
bind-addressをコメントアウトする。
#bind-address = 127.0.0.1
設定したらMySQLの再起動をする。
sudo service mysql restart
ユーザーの作成
ネットワーク越しに接続できるユーザーを作成してみる。
hogeuserというユーザーを追加して、
パスワードはpasso
すべてのデータベースにアクセスする権限を持っていて、どこのホストからでも接続できる。
実行に関してはすべての権限を持っている。
というユーザーにしよう。
GRANT ALL PRIVILEGES ON *.* TO hogeuser@"%" IDENTIFIED BY 'passo' WITH GRANT OPTION;
上のSQLを実行できたら、下のSQLでユーザー一覧を見てみよう
select Host, User from mysql.user;
hogeuserの列にhostが%のものができていればOKだ
別のマシンから接続する
別のマシンからそいつでMySQLにログインをしてみる。
mysql -h 192.168.0.3 -u hogeuser -ppasso
これでログインができたら成功。
設定に関してまとめ
今回は例として、すべてのIPから接続できるすべてのDBの権限を持つユーザーを作成したけれど、
実際運用する場合は権限を狭める必要がある。
ユーザーの利用できるデータベースを決めておいたり、参照するだけならばSELECTの権限だけを与えるなど。
とくにrootユーザーはローカルでのみの接続に制限しておいたほうがいい。
接続できるIPも決めておいて、
bind-addressもコメントアウトせず、接続できるIPを決めておいたほうがいい。
また今回はローカルのみの公開だけれども、
インターネット上に公開する場合はポートを変更することも必要だと思う。
MySQLについて読んでいる読者には釈迦に説法だけれども
ユーザー名やパスワードは公開しないように気をつけてください。※もちろんこの記事のパスワードは架空のものです。