メニュー

1-11 MySQL導入

まずMySQLの導入から始める。

dnf install mysql
systemctl start mysqld
systemctl enable mysqld

インストールするときはmysql、システム管理するときにはmysqldになる。

phpMyAdminは必要か否か?

結論としては、運用管理さえ出来たらどちらでもよい。
ネットの論争になることもあるけれど、あまり拘りすぎないように。

以下、メンターに聞いたときのアドバイス。

  • セキュリティリスクとは常に古い状態のものがそこにあるというのが問題なので、使ったら消すという運用ができれば何でもOK。とりあえず放置しないでね。
  • phpMyAdminではなくAdminer(https://www.adminer.org/)という手段もあるよ。

MySQLの設定ファイルの確認

mysqlがどこにあるのかを探す。

mysql --help

「Default options are read〜」の部分を確認する。

Default options are read from the following files in the given order:
/etc/my.cnf /etc/mysql/my.cnf ~/.my.cnf 

「Default options are read from the following files in the given order」は、翻訳すると「デフォルトのオプションは、次のファイルから指定された順序で読み取られます」。なので、以下の順番で設定ファイルが読み込まれている。

  1. /etc/my.cnf
  2. /etc/mysql/my.cnf
  3. ~/.my.cnf

設定ファイルの詳しい読み込み順は以下を参考にする。

「/etc/my.cnf」を確認する

まずは最初に読み込まれる/etc/my.cnfから確認する。
私の実際の環境では、/etc/my.cnfには以下のように書かれていた。

#
# This group is read both both by the client and the server
# use it for options that affect everything
#
[client-server]

#
# include all files from the config directory
#
!includedir /etc/my.cnf.d

最後の”!includedir /etc/my.cnf.d”は、指定されているディレクトリ/etc/my.cnf.d/以下の設定ファイルを読み込みます。 ただし読み込まれるファイルは、Windowsの場合、.iniまたは.cnfで、 それ以外のUnixでは、.cnfの拡張子をもつものだけです。

http://www.ajisaba.net/db/mysql/my_cnf.html

何か新しい設定を加えるなら、/etc/my.cnf.dの中に<ファイル名>.cnfファイルを作成して管理していくのがよさそう。

設定できるグローバル設定の確認方法

mysqlにログインし、mysqlコマンドを入力する。mysqlからログアウトするときはexitかquitコマンドを入力する。

システム設定値を確認する

SHOW GLOBAL VARIABLES;

ステータス値を確認する

SHOW GLOBAL STATUS;

MySQLの文字コードの確認

MySQL8.0ではcharacter_set_serverやcharacter_set_databaseのデフォルトがutf8ではなくutf8mb4になっている。
保存できる文字はutf8よりutf8mb4の方が多い。

これはつまり、UnicodeのコードポイントがU+FFFFを超える文字は、utf8では保存できないってことです。

例えば

  • 崎(U+5D0E)←保存できる
  • 﨑(U+FA11)←保存できる
  • 😀(U+1F600)←保存できない
  • 𩸽(U+29E3D)←保存できない
    ※ちなみにこの漢字はホッケと読みます

みたいな感じ。

https://penpen-dev.com/blog/mysql-utf8-utf8mb4/