From the daily archives: 金曜日, 8月 12, 2011

MySQLでDBを新しく作るときはたいてい必ずそれ専用のユーザーをつくると思います。
そうすることで、他のDBへのアクセス制限ができて、しっかりと区別できるわけですね。

このDB作成作業、ほぼ流れ作業化しているので、メモっときます。

  1. パスワードを決める
    ランダムパスワードを作るならいろんなサイトがある。
    (たとえばランダムパスワード生成CGI
    外部サイトを使うのが怖ければmkpasswdというコマンドがlinuxにはあるので、これを使うといいかも。ただし、こちらはyumでexpectをインストールする必要がある。

  2. DB作成権限があるユーザーでMySQLにログイン(たいていはroot)[plain]mysql -u ユーザー名 -p[/plain]
  3. 次のコマンドを実行する
    もちろん「新規ユーザー名」「新規DB名」「パスワード」の部分はぞれぞれに応じて変更すること
    (自分の場合は「新規ユーザー名」=「新規DB名」)
    [sql]CREATE USER ‘新規ユーザー名’@'localhost’ IDENTIFIED BY ‘パスワード’;
    GRANT USAGE ON * . * TO ‘新規ユーザー名’@'localhost’ IDENTIFIED BY ‘パスワード’ WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;
    CREATE DATABASE IF NOT EXISTS `新規DB名` ;
    GRANT ALL PRIVILEGES ON `新規ユーザー名` . * TO ‘新規ユーザー名’@'localhost’;
    [/sql]

これで、新規DBとそのDB専用のユーザーができました。
ちなみに、この状態だとlocalhostからの接続しか許可されていない状態になるので、外部からdbを使う場合はそれ用の設定がさらに必要になります。