GUI で MySQL(MariaDB) 設定

MySQL は何かと便利な SQL データベースなので、インストールしておくとそこそこ役に立ちます。主な理由は、MySQL用のプラグインやAPIが多い事でしょうか。インストール入門編としてご利用下さい。

※ 現在では MySQL に代わり MariaDB (パッケージ名:mariadb)が利用されています。MariaDB では、MySQL のアクセスライブラリやアプリケーション、設定ファイルなどが、ほぼ確実に利用できます。ツール名も殆どが mysql から始まります。

※ 現在では MySQL の日本語版オンラインマニュアルの公開が行われていません。このページから 5.1 の日本語マニュアルならダウンロード出来ます。

インストール

「ソフトウェアの追加/削除」でMySQLをインストール

※ Fedora22 からは DNF を用いてインストールを行います。詳しくはコチラをご覧下さい。

MySQL インストール

MariaDBの場合は「mariadb」「mariadb-server」「mariadb-server-utils」をインストール

「ソフトウェアの追加/削除」で MySQL Workbench をインストール

※ 現在利用できるのは「MySQL Workbench Community Edition」です。パッケージャで見つからない場合はコチラ

MySQL Workbench インストール

※ これはMySQL用のGUIです。Web上で操作できるモノも存在しますが、セキュリティー上の問題から、こちらを使用します。
※ phpMyAdmin などは、しばしばクラッカーの標的になります。特にアクセス制限なとを行っていない場合は、注意が必要です。 Web上で公開する必要がないのであれば、MySQL Workbenchなどを使うべきです。
※ 現在では mysql-workbench は mysql-workbench-community と言う名前で Oracle から提供されています。ココからか、もしくは Oracle から入手して下さい。

設定

『/usr/share/mysql』のフォルダを開きます。(MariaDB の場合は『/usr/share/mariadb』)
※ MariaDB では、メモリサイズの設定ファイルは無くなりました。

my.cnf の入手

まずは、赤線で囲まれた設定ファイルの内の一つを選びます。

それぞれの設定ファイルは、使用するメモリサイズで分かれています。

※ メモリサイズに合わせてMySQLを設定しておくと、快適に動作するハズ
my-small.cnf (64M) < my-medium.cnf (32M – 64M) < my-large.cnf (512M) < my-huge.cnf (1G-2G) < my-innodb-heavy-4G.cnf (4G)

この内の一つをコピーして、『my.cnf』として保存します(もちろん、ホームフォルダ配下にネ)。

※ コピー&ペーストで名前を変更すればOK

ここで、ファイルを開いてみましょう。(gedit や好きなエディタで開きましょう)

my.cnf の内容

すると、カギ括弧で囲まれている部分があるのが分かります。
これば、設定対象を表しています。

※ 全ての設定対象が、記述されているとは限りません。詳しくはココを参照。

そこで、全ての設定対象に、『default-character-set=utf8』の一行を加えるようにして下さい。

※ これは、デフォルトのキャラセット(文字コード)を UTF-8 にすると言う意味です。文字化けやシステム構築用の対策だと思って下さい。

※ MariaDB ver 10 などでは『/etc/my.cnf.d/』に拡張子が『.cnf』の個別ファイルとして記述出来るようになりました。しかし『/etc/my.cnf』にある『!includedir /etc/my.cnf.d』が存在しない場合は、この限りではありません。

※ Fedora15 以降で使用されている MySQL 5.5 では、[mysqld] に対しては『default-character-set=utf8』が使用出来なくなりました。代わりに『character-set-server=utf8』を指定するようにして下さい。MariaDB も同様です。

そして編集を終えた『my.cnf』を『/etc/』にコピーして下さい。

※ スーパーユーザー権限が必要です。(スーパーユーザーとしてGUIでフォルダにアクセス

起動

$ # MariaDB での起動
$ su
# systemctl start mariadb.service

# # システム起動時に MariaDB が起動するようにする
# systemctl enable mariadb.service

# # root アカウントの作成などを行い、セキュアな設定にする
# # 初回起動のみ mysql_secure_installation スクリプトを実行する
# mysql_secure_installation
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY!In order to log into MariaDB to secure it, we’ll need the current
password for the root user. If you’ve just installed MariaDB, and
you haven’t set the root password yet, the password will be blank,
so you should just press enter here.Enter current password for root (enter for none):
OK, successfully used password, moving on…Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorisation.Set root password? [Y/n] y  ← root にパスワードを設定しますか?
New password:
Re-enter new password:
Password updated successfully!
Reloading privilege tables..
… Success!By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them. This is intended only for testing, and to make the installation
go a bit smoother. You should remove them before moving into a
production environment.Remove anonymous users? [Y/n] y ← 匿名ユーザーを削除しますか?
… Success!Normally, root should only be allowed to connect from ‘localhost’. This
ensures that someone cannot guess at the root password from the network.Disallow root login remotely? [Y/n] y ← root のリモートログインを拒絶しますか?
… Success!By default, MariaDB comes with a database named ‘test’ that anyone can
access. This is also intended only for testing, and should be removed
before moving into a production environment.Remove test database and access to it? [Y/n] y ← test データベース関連を削除しますか?
– Dropping test database…
… Success!
– Removing privileges on test database…
… Success!Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.Reload privilege tables now? [Y/n] y ← アクセス権関連のテーブルをリロードしますか?
… Success!Cleaning up…

All done! If you’ve completed all of the above steps, your MariaDB
installation should now be secure.

Thanks for using MariaDB!

『システム』>『管理』>『サービス』でサービスの確認(Fedora14まで)

MySQL起動

  • 一覧の中に『mysqld』があることを確認する。
  • 『無効』(赤色)になっている場合は『有効』(緑色)にする。
  • コンセントが刺さっていない場合は、『開始』をクリックしてサービスを開始しよう。

※ 本来ならこの後、『mysql_install_db』が必要なハズだが、パッケージャー経由(YUM、RPMなど)では不要らしい。必要なら端末を起動し、スーパーユーザーになった後に『mysql_install_db』を実行しよう。このコマンドは、MySQLの設定データベース作成などのを行うもので、複数回実行しても、問題は無い。
※ Fedora15 以降ではサービスの設定方法が変更されています。詳しくはココを参照して下さい。
※ Fedora19 からは MariaDB に変更されています。(MySQL も利用可能です。)それに伴い、サービス名が mysqld から mariadb に変更されます。

Fedora16 で MySQL が起動しないというトラブルに見舞われた。

特に問題があるとも思えず、しかもログにも原因が見つからない。mysqld_safe
では起動するのに「systemctl start mysqld.service」では起動しない。当然、SELinux
が疑われるワケだが、警告さえ出ないし、「/var/log/audit/audit.log」も空振り。しかし、「/var/log
/messages」には以下の様な警告が…。

Nov 14 16:26:33 zeus systemd[1]: Unit mysqld.service entered failed state.
Nov 14 16:26:33 zeus mysqld_safe[4205]: /bin/sh: error while loading shared libraries: cannot apply additional memory protection after relocation: Permission denied
Nov 14 16:26:33 zeus systemd[1]: mysqld.service: control process exited, code=exited status=127
Nov
14 16:26:33 zeus kernel: [  488.942026] type=1400
audit(1321255593.628:25): avc:  denied  { read } for  pid=4205
comm=”mysqld_safe” path=”/bin/bash” dev=dm-1 ino=2359328
scontext=system_u:system_r:mysqld_safe_t:s0
tcontext=system_u:object_r:shell_exec_t:s0 tclass=file

あれ? 共有ライブラリの読み込み失敗?
そこで、「restorecon -R /usr/lib64/mysql」などとしてコンテキストの修正をしてみたが、改善せず。

仕方がないので、上記のログから audit の部分「type=1400
audit(1321255593.628:25): avc:  denied  { read } for  pid=4205
comm=”mysqld_safe” path=”/bin/bash” dev=dm-1 ino=2359328
scontext=system_u:system_r:mysqld_safe_t:s0
tcontext=system_u:object_r:shell_exec_t:s0 tclass=file
」を抜き出して「mysqlservicex.log」に保存し、コマンドラインから以下のコマンドを実行してみた。

# cat mysqlservicex.log | audit2allow -M mysqlservicex
# semodule -i mysqlservicex.pp

すると解決!!

つまるトコロ原因は SELinux だったワケだが、「SELinux トラブルシュート」を信じすぎるのも問題なんだよね。orz

接続ユーザーの追加

『アップリケーション』>『システムツール』>『端末』を選択し、

shell> su
パスワード:
# mysqladmin -u root password “newpwd
# mysqladmin -u root -h host_name password “newpwd

newpwd はパスワードを指定
host_name は DB にアクセスさせたいマシンの IP アドレスかマシン名を指定

# mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 5
Server version: 5.1.55-log Source distribution
Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 licenseType ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the current input statement.mysql> delete from mysql.user where User = ”;
Query OK, 0 rows affected (0.00 sec)mysql> quit;
Bye

これで、おおよその設定は終了だ。

GUI によるメンテナンス

『アップリケーション』>『プログラミング』>『MySQL Workbench』を選択

MySQL Workbench 起動画面

MySQL-Workbench-community 6.2 初期画面

上は従来の画面、下は MySQL Workbench Community 6.2 の初期画面。

MySQL Workbench Community  では、アイコン操作が多くなっています。主な意味は次の様になっています。マウスオーバーで表示されるモノもありますので、注意して下さい。

MySQL-Workbench-community 6.2 アイコン

まずは『New Connection』をクリック
すると、接続作成画面が表示される。

MySQL Workbench 接続作成

①には接続名、②は『Local Socket/Pipe』、③には『root』、④をクリックしてパスワードを入力、⑤をクリックして問題がなければ『localhost』に対して、ソ ケットパイプ(ソケットファイル)による接続が作成される。とりあえず、⑤をクリックした段階で、ダイアログが表示されるが、Error や Warning の文字がなければOKと思えば良い。(英語が読めればなお良いのだが…)

※ ソケットパイプ(ソケットファイル)とは、名前のとおりパイプの一種(ネームドパイプが概念的には近い?)で、接続スピードがTCP/IPなどよりはるかに速い。ただし、同一マシン内でのみ有効な方法。

MySQL Workbench 接続作成後

ここで、作成した『root による接続』をダブルクリックしてみよう。
すると、次の画面が表示される。

MySQL Workbench テーブル作成

MySQL-Workbench-community 6.2 レイアウト

上は従来の画面、下は MySQL-Workbench-community 6.2 。

新しいタブとして、スキーマ(要するにデータベース)変更が行える。
ここで、『test』データベースを使用して色々と、テストしてみよう。

※ 『test』データベースは『mysql_install_db』を使用することによって作成される、テスト用のデータベースだ。もちろん、この『test』データベースを削除しても問題は無いし、自由に項目の追加や削除を行っても良い事になっている。

そこで、『Add Table』をクリックして、テーブルを追加してみよう。

MySQL Workbench テーブル設定

  • 『Name』テーブル名 … 漢字でも動作するハズだが、問題が発生するアプリケーションも多いので、アルファベットを使おう。
  • 『Collation』キャラセット … 文字コード UTF-8 を指定。(ユニコード系が望ましい)
  • 『Engine』エンジン … データベースのタイプだと思えばいい。MyISMは高速で動作するがトランザクションが使用できない(デフォルト)。 InnoDB は、トランザクションが使用できるタイプ。詳しくはコチラ

次は『Columns』タブを選択し、テーブル項目を作成。

MySQL Workbench テーブル項目作成

使用したデータ型は次のとおり

INT 整数型
VARCHAR 可変文字列

データタイプ

  • BIT[(M)] … ビットフィールドタイプ
  • TINYINT[(M)] [UNSIGNED] [ZEROFILL] … とても小さい整数
  • BOOL、BOOLEAN … 1 or 0
  • SMALLINT[(M)] [UNSIGNED] [ZEROFILL] … 小さい整数
  • MEDIUMINT[(M)] [UNSIGNED] [ZEROFILL] … 中くらいの整数
  • INT、NTEGER[(M)] [UNSIGNED] [ZEROFILL] … 通常の整数
  • BIGINT[(M)] [UNSIGNED] [ZEROFILL] … 大きい整数
  • FLOAT[(M,D)] [UNSIGNED] [ZEROFILL] … 小さい浮動小数点数
  • DOUBLE、DOUBLE PRECISION、REAL[(M、D)] [UNSIGNED] [ZEROFILL] … 大きい浮動小数点数
  • FLOAT(p) [UNSIGNED] [ZEROFILL] … 精度指定の浮動小数点数
  • DECIMAL、DEC、NUMERIC、FIXED[(M[,D])] [UNSIGNED] [ZEROFILL] … 固定小数点
  • DATE … 日付
  • DATETIME … 日時
  • TIMESTAMP … タイムスタンプ
  • TIME … 時刻
  • YEAR[(2|4)] … 年
  • CHAR [CHARACTER SET charset_name] [COLLATE collation_name] … 固定長文字列
  • [NATIONAL] VARCHAR(M) [CHARACTER SET charset_name] [COLLATE collation_name] … 可変長文字列
  • BINARY[(N)] … 固定長バイナリバイト文字列
  • VARBINARY(M) … 可変長バイナリバイト文字列
  • TINYBLOB … 最長 255 Byte の保存領域
  • BLOB[(M)] … 最長 65,535 Byte の保存領域
  • MEDIUMBLOB … 最長 16,777,215 Byte の保存領域
  • LONGBLOB … 最長 4G Byte の保存領域
  • TINYTEXT [CHARACTER SET charset_name] [COLLATE collation_name] … 最長 255 文字の文字列
  • TEXT[(M)] [CHARACTER SET charset_name] [COLLATE collation_name] … 最長  65,535 文字の文字列
  • MEDIUMTEXT [CHARACTER SET charset_name] [COLLATE collation_name] … 最長  16,777,215 文字の文字列
  • LONGTEXT [CHARACTER SET charset_name] [COLLATE collation_name] … 最長 4,294,967,295 文字の文字列(ただし、上限 4G Byte)
  • ENUM(‘value1’、’value2’,…)[CHARACTER SET charset_name] [COLLATE collation_name] … 列挙型(NULLも可能)
  • SET(‘value1’、,’value2’,…)[CHARACTER SET charset_name] [COLLATE collation_name] … 列挙型

フィールドオプション

  • PK – Primary key. 主キー 要するに主インデックス
  • NN – Not null. NULL(空)を許さない。
  • UQ – Unique. ユニーク(重複しない)
  • BIN – Binary. バイナリー
  • UN – Unsigned. 符号無し(0以上)
  • ZF – Zero fill. ゼロで埋める
  • AI – Autoincrement. 自動カウントアップ

MySQL Workbench Community 6.2 の場合

MySQL Workbench Community 6.2 ALTER TABLE

ここで、『Apply』を押せば、テーブルが作成される。

MySQL Workbench テーブル作成後

※ あるバージョンからレイアウトが変更されています。詳しくは末尾をご覧下さい。

日本語も問題ない

MySQL Workbench 日本語データテスト

※ あるバージョンからレイアウトが変更されています。詳しくは末尾をご覧下さい。

カーソルのある『Apply changes to data』(変更をデータに反映)をクリックすれば、実際のデータベース内のデータが変更される。

MySQL Workbench の細かな操作方法が知りたければ、付属のヘルプ(英語)を調べるか、ネットで検索して下さい。MySQLのフロントエンドとしては、おそらく最強でしょうから。

※ version 5.2.33 では、テーブル名を変更した場合などに落ちる(64bit版だけ?)。速く修正して欲しいなぁ

ファイアーウォールの設定

他のマシンからMySQLへのアクセスを許可する場合、TCP/IPポートを開放しておく必要がある。

『システム』>『管理』>『ファイアーウォール』

※ GNOME3 からは『アプリケーション』>『その他』>『ファイヤーウォール』

MySQL の Firewall 設定

『その他のポート』を選択して『追加』をクリック。

MySQL ポート開放

通常、3306番のTCP/UDPポートをオープンしておけば問題ない。

※ 『/etc/my.cnf』で、独自のポート番号を指定してある場合はその番号を指定する。

※ FirewallD を利用している場合は、コチラをご覧下さい。

これで『適応』させれば終了だ。

MySQL Workbench のレイアウト変更

ある時点からレイアウトが変更されています。

MySQL Workbench 5.2.38 レイアウト

MySQL Workbench 5.2.38 ポップアップメニュー

MySQL Workbench 5.2.38 データ変更

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です