MariaDB/MySQL ユーザ データベース作成 SQL文

MariaDB/MySQLにおいて、データベースとデータベースユーザをSQLで作成する方法について説明します。

データベースを1個作成して、そのデータベースへアクセスする権限を持つユーザを作成します。ユーザはローカルホスト(localhost)から接続するものとします。

データベース設定情報

以下の内容でデータベースを設定します。

データベース名
example
データベースユーザ名
example
パスワード
6fhudynbKs4V3FH87YQr

権限のあるユーザでログイン

以下の設定は、mysqlコマンドやphpMyAdminにおいて、データベースとデータベースユーザを作成する権限を持つユーザ(たとえばrootユーザ)でログインして実行して下さい。

mysql -u root -p
Enter password:
MariaDB [(none)]>

データベースユーザの作成

データベースexampleに対して、全ての権限を持つデータベースユーザexampleを作成します。

GRANT ALL PRIVILEGES ON example.* TO example@localhost IDENTIFIED BY '6fhudynbKs4V3FH87YQr';

example.*の部分は権限を与えるデータベースを指定しています。また、ユーザに対して(グローバルレベルの権限ではなく)データベースレベルの権限を与えることも示しています。

example@localhostの部分はlocalhostからアクセスするユーザを指定しています。

データベースの作成

データベースexampleを作成します。

CREATE DATABASE example;

動作確認

mysqlコマンドで簡単な動作確認をしてみます。

mysql -u example -p
Enter password:
MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| example            |
| information_schema |
+--------------------+
2 rows in set (0.00 sec)

MariaDB [(none)]> use example
Database changed
MariaDB [example]> show tables;
Empty set (0.00 sec)

データベースユーザexampleで設定したパスワードでログインして、show databasesコマンドでデータベースの一覧にexampleが表示されることを確認しました。テーブルは作成していないので何も表示されません。

MySQL 4.1系 phpMyAdminでログインができないとき

MySQL4.1系ではパスワードの認証方法が変わってphpMyAdminへログインできなくなる症状がでる。old-passwordを利用することでログインできるようになる。
my.cnf へold_passwordsの記述を追加して編集してmysqlを再起動する。

vi /var/db/mysql/my.cnf
--------------------------------------------------
[mysqld]
old_passwords
--------------------------------------------------
/usr/local/etc/rc.d/mysql-server restart

環境変数を確認してold_passwordsがONになっていればOK。

mysql -u root -p
mysql> show variables;
省略
| old_passwords                   | ON
省略

既にユーザへパスワードを設定してしまっている場合はold-passwordのオプションをつけて再設定する。

/usr/local/bin/mysqladmin -u root old-password 'yourpass' -p

MySQL phpMyAdmin インストール

MySQLとphpMyAdminをインストールする。

サーバのホスト名がwww.example.comとした場合にhttp://www.example.com/phpMyAdmin/というURLでphpMyAdminへアクセスできるように設定する。

MySQLをインストールしてmysql_secure_installationコマンドで不要な匿名ユーザやテストデータベースを削除し、rootのパスワードをMkWBmX25rPYkとして設定する。

yum -y install mysql-server
chkconfig mysqld on
chkconfig  --list mysqld
----------------------------------------------------------------------
mysqld          0:off   1:off   2:on    3:on    4:on    5:on    6:off
----------------------------------------------------------------------
/etc/rc.d/init.d/mysqld start
mysql_secure_installation
----------------------------------------------------------------------
Enter current password for root (enter for none): (まだパスワードを設定していないのでEnterキーを押す)
Set root password? [Y/n] y
New password: MkWBmX25rPYk (パスワード入力)
Re-enter new password: MkWBmX25rPYk (パスワード入力)
Remove anonymous users? [Y/n] y
Disallow root login remotely? [Y/n] y
Remove test database and access to it? [Y/n] y
Reload privilege tables now? [Y/n] y
----------------------------------------------------------------------

あとの設定はCentOS5と6の場合で内容が異なる。


CentOS 6の場合

使用する文字コードをUTF-8に設定する。

vi /etc/my.cnf
--------------------------------------------------------------
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
character-set-server=utf8
skip-character-set-client-handshake
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
--------------------------------------------------------------
/etc/rc.d/init.d/mysqld restart

文字コードがUTF-8になっているか確認する。

mysql -u root -p
mysql> show variables like 'char%';
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8                       |
| character_set_connection | utf8                       |
| character_set_database   | utf8                       |
| character_set_filesystem | binary                     |
| character_set_results    | utf8                       |
| character_set_server     | utf8                       |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)
mysql> exit
Bye

phpMyAdminをダウンロードおよび設置とApacheの設定を行う。Apacheは既にインストール済みであると想定している。
最新版のphpMyAdminは本家サイトで確認する。

phpMyAdmin ダウンロードページ

CentOS6でインストールされるMySQLのバージョンは5.1系ですが、phpMyAdmin4.2系以降はMySQL5.5移行のバージョンを対象としているため利用できません。phpMyAdmin4.0系の最新版の利用を検討して下さい。

cd /usr/local/src/
wget http://downloads.sourceforge.net/project/phpmyadmin/phpMyAdmin/4.0.10.9/phpMyAdmin-4.0.10.9-all-languages.tar.gz
tar zxvf phpMyAdmin-4.0.10.9-all-languages.tar.gz
mv phpMyAdmin-4.0.10.9-all-languages /var/www/phpMyAdmin
chown -R root:apache /var/www/phpMyAdmin/
vi /etc/httpd/conf.d/phpmyadmin.conf
------------------------------------------------------
Alias /phpMyAdmin "/var/www/phpMyAdmin"
<Directory "/var/www/phpMyAdmin">
Order allow,deny
Allow from all
</Directory>
------------------------------------------------------
apachectl -t
Syntax OK
/etc/rc.d/init.d/httpd reload

MySQL5.1ではdefault-character-setではなくcharacter-set-serverを使用する。
MySQL5.1ではログに警告がでるくらいだが、MySQL5.5くらいのバージョンになると完全に使えなくなるので、念のためcharacter-set-serverを使用した方がよいだろう。
また、phpMyAdminは2系とは異なり、特に設定ファイルを作成しなくてもファイルを展開するだけである程度は利用できるようになっている。


CentOS 5の場合

文字コードがlatin1になっているのをUTF-8に変更する。EUCの場合はutf8をujisと置き換えてください。

追記: 2008/11/22
以前は”init-connect=SET NAMES utf8″を設定していました。しかし、どんな場合でもUTF-8として扱う強制的な設定なため、他の文字コードも混在する場合には不具合の原因となる場合があります。現在はコメントアウトにしています。プログラム側で文字コードの修正ができない場合など有用な場合もあります。

cp /etc/my.cnf /etc/my.cnf.org
vi /etc/my.cnf
--------------------------------------------------------------
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
# Default to using old password format for compatibility with mysql 3.x
# clients (those using the mysqlclient10 compatibility package).
old_passwords=1
default-character-set=utf8
skip-character-set-client-handshake
#init-connect=SET NAMES utf8
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
default-character-set=utf8
[mysql]
default-character-set=utf8
--------------------------------------------------------------
/etc/rc.d/init.d/mysqld restart
mysql> show variables like 'char%';
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | ujis                       |
| character_set_connection | ujis                       |
| character_set_database   | ujis                       |
| character_set_filesystem | binary                     |
| character_set_results    | ujis                       |
| character_set_server     | ujis                       |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)
mysql>exit

PHPとPHPのモジュールインストール

PHPのインストールをしていない場合はインストールしてください。

yum -y install php php-mysql php-mbstring php-pear php-gd

phpMyAdminのインストール

最新版は本家からダウンロードしてください。phpMyAdmin ダウンロードページ/

CentOS5.2のPHPのバージョンが5.1系なので、PHP5.2以上が必要なphpMyAdmin3系はデフォルトでは利用できません。phpMyAdmin2系の最新版をご検討ください。

cd /usr/local/src/
wget http://jaist.dl.sourceforge.net/sourceforge/phpmyadmin/phpMyAdmin-2.11.9.3-all-languages.tar.gz
tar zxvf phpMyAdmin-2.11.9.3-all-languages.tar.gz
mv phpMyAdmin-2.11.9.3-all-languages /var/www/phpMyAdmin
chown -R root:apache /var/www/phpMyAdmin/
vi /etc/httpd/conf.d/phpmyadmin.conf
------------------------------------------------------
Alias /phpMyAdmin "/var/www/phpMyAdmin"
<Directory "/var/www/phpMyAdmin">
Order allow,deny
Allow from all
</Directory>
------------------------------------------------------
/etc/rc.d/init.d/httpd reload
mkdir /var/www/phpMyAdmin/config
chmod 777  /var/www/phpMyAdmin/config
http://www.example.com/phpMyAdmin/scripts/setup.php にアクセス
--------------------------------------------------------------------------------
Load ボタン
Servers Add ボタン
Authentication type = http
Add ボタン
Save ボタン
--------------------------------------------------------------------------------
mv /var/www/phpMyAdmin/config/config.inc.php /var/www/phpMyAdmin/config.inc.php
http://www.example.com/phpMyAdmin/ にアクセスしてログイン確認
ID: root
PW: MySQL root パスワード
rm -rf /var/www/phpMyAdmin/config
chmod 444 /var/www/phpMyAdmin/config.inc.php
chmod 000 /var/www/phpMyAdmin/scripts