目次
MySQLとは?
MySQLとは、端的に言うとオープンソースのデータベース管理システムです。
簡単な個人事業主が使用する顧客リストから社内ネットワークの膨大な情報など、さまざまなデータベースを取り扱えます。
現在ではOracle社が開発・サポートをしていますが、オープンソースであるため開発者が自由に変更し使用できます。また、リレーショナルデータベースという特徴もあり、すべてのデータを独立してテーブルに保存できます。
MySQL設定とは?
ここからは、MySQL設定について説明します。
MySQL設定には初期設定から始まり、必要であれば自動起動の設定などが必要です。MySQLの利用者や興味のある方はぜひご覧ください。
初期設定
初期設定は、rootパスワードの設定やanonymousユーザーの削除、rootでのリモート接続設定にtestDBの削除などです。
セキュアな環境を作り出すためにも、初期設定では強力なパスワードを設定しましょう。
文字コード
文字コードは、クライアントとサーバーそれぞれにあります。
MySQLでは、デフォルトでlatin1という文字コードになっていますが、こちらは日本語を扱えません。そのため、日本語を使用できるようにするためにも文字コードの設定は必要です。
データベース
MySQLはデータベースを単位として管理するシステムなので、MySQLを利用するのであればデータベースを作成する必要があります。
WordPressなどのコンテンツマネジメントシステムでこのデータベースは利用されます。
ユーザー
ユーザーが存在することで、データベースの作成やテーブルに追加したデータを取得できるようになります。
MySQLでは、初期ユーザーとしてrootが設定されており、パスワードは空になっています。つまり、初期設定では誰でも
1
|
mysql -u root
|
とコンソールからコマンドを打つことで、管理者権限にてログインできます。この状況はリスクが高いため、ユーザー設定をしましょう
権限
MySQL設定を変更することで、ユーザー毎に権限を割り振れます。
全権限をユーザーに付けることもできますし、セキュア接続の使用やサーバーリソースへのアクセスに関する制限を設けることもできます。
MySQL設定方法
ここから、それぞれのMySQL設定についての設定方法を下記にて紹介します。
具体的なコマンドも載せているので、コマンドの作成にお困りの方はぜひ最後までご覧ください。
初期設定
まずは初期のMySQL設定をしましょう。
1
|
mysql_secure_installation
|
こちらのコードで最低限のセキュリティ設定が可能で、root ユーザーのパスワードの変更やanonymousユーザーの削除、リモートからrootユーザーでのログインを禁止できます。
MySQL 5.7からはVALIDATE PASSWORDプラグインをインストールするかどうかも聞かれるようになりました。
もしより強固なパスワードにしたい場合は、VALIDATE PASSWORDプラグインもインストールしましょう。
文字コード
続いて文字コードを設定します。
1
|
vim /etc/my.cnf
|
こちらを打って、my.cnfファイルを編集します。ここで設定したい文字コードとデフォルトテーブルの種別に設定しましょう。
以下のコードは例です。
1
2
3
4
|
[mysqld]
character-set-server=utf8
default-storage-engine=InnoDB
innodb_file_per_table
|
データベース
データベースを作成しましょう。この手順が抜けていると、のちに
1
|
No database selected
|
とエラーが発生します。データベースを作成するコードの構文は、
1
2
3
4
5
6
|
CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name
[create_specification] ...
create_specification:
[DEFAULT] CHARACTER SET [=] charset_name
| [DEFAULT] COLLATE [=] collation_name
|
です。例えば『mysqltest』というデータベースを作成するコードは、
1
2
|
CREATE DATABASE mysqltest;
use mysqltest;
|
です。これでデータベースの作成と、作成したデータベースに移動が行えます。
ユーザーの設定
続いてユーザーを作成します。ユーザーの作成にはCREATE USERを使用します。CREATE USERの構文は、
1
2
3
4
5
6
7
8
|
CREATE USER user_specification [, user_specification] ...
user_specification:
user
[
| IDENTIFIED WITH auth_plugin [AS 'auth_string']
IDENTIFIED BY [PASSWORD] 'password'
]
|
です。
もしユーザー名が『User』、パスワードが『Password』でユーザーを作成したい場合は、
1
|
CREATE USER 'User'@'localhost' IDENTIFIED BY 'Password';
|
で作成できます。ユーザーをどこからでも接続できるようにしたい場合は、
1
|
CREATE USER 'User'@'%'localhost' IDENTIFIED BY 'Password';
|
というコマンドを打ちましょう。
権限の設定
MySQL設定を変更することで、権限の設定ができます。
使用する構文は、
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
|
GRANT
priv_type [(column_list)]
[, priv_type [(column_list)]] ...
ON [object_type] priv_level
TO user_specification [, user_specification] ...
[REQUIRE {NONE | ssl_option [[AND] ssl_option] ...}]
[WITH with_option ...]
GRANT PROXY ON user_specification
TO user_specification [, user_specification] ...
[WITH GRANT OPTION]
object_type:
TABLE
| FUNCTION
| PROCEDURE
priv_level:
*
| *.*
| db_name.*
| db_name.tbl_name
| tbl_name
| db_name.routine_name
user_specification:
user
[
| IDENTIFIED WITH auth_plugin [AS 'auth_string']
IDENTIFIED BY [PASSWORD] 'password'
]
ssl_option:
SSL
| X509
| CIPHER 'cipher'
| ISSUER 'issuer'
| SUBJECT 'subject'
with_option:
GRANT OPTION
| MAX_QUERIES_PER_HOUR count
| MAX_UPDATES_PER_HOUR count
| MAX_CONNECTIONS_PER_HOUR count
| MAX_USER_CONNECTIONS count
|
というGRANT構文です。
例えば、『User』というユーザーに全ての権限を付けたい場合のコマンドは、
1
|
GRANT all ON *.* TO 'User'@'localhost';
|
です。
自動起動の設定
OS起動時に自動的にMySQLを立ち上げたい場合、設定する必要があります。
Linuxの場合はchkconfigコマンドを使用します。起動スクリプトをインストールした後
1
|
chkconfig --add mysql
|
というコマンドを打つことでシステムの起動時に実行されます。
MySQL設定をしよう!
いかがでしたでしょうか。MySQL設定でデータベースやユーザーの作成ができます。
また、必要であればシステム起動時にMySQLが自動的に起動するようにもできます。
ぜひ、自分が使用しやすいようにMySQL設定を変更してみて、理解を深めてください。
インフラエンジニア専門の転職サイト「FEnetインフラ」
FEnetインフラはサービス開始から10年以上『エンジニアの生涯価値の向上』をミッションに掲げ、多くのエンジニアの就業を支援してきました。
転職をお考えの方は気軽にご登録・ご相談ください。