CentOS7にMySQL(MariaDB)をインストールしてみる
MariaDBの場合
CentOS7から、MySQLではなくMariaDBが標準になったみたいで、 MySQLをインストールしようとすると、MariaDBがインストールされる。
$ sudo yum install mysql ・・・ =================================================================================================================================== Package Arch Version Repository Size =================================================================================================================================== Installing: mariadb x86_64 1:5.5.68-1.el7 base 8.8 M ・・・
mysql-serverは無い。
$ sudo yum install mysql-server ・・・ No package mysql-server available. Error: Nothing to do
MariaDBをインストールしてみる。
バージョン「5.5」はサポートが終了してるみたいだが、開発で試しに使うだけなので、気にしない。
$ sudo yum -y install mariadb mariadb-server ・・・ =================================================================================================================================== Package Arch Version Repository Size =================================================================================================================================== Installing: mariadb x86_64 1:5.5.68-1.el7 base 8.8 M mariadb-server x86_64 1:5.5.68-1.el7 base 11 M ・・・
バージョン確認。
mysqldコマンドは使えないみたい。
$ mysqld --version -bash: mysqld: command not found $ mysql --version mysql Ver 15.1 Distrib 5.5.68-MariaDB, for Linux (x86_64) using readline 5.1
起動して、自動起動の設定もしておく。
$ sudo systemctl start mariadb $ sudo systemctl enable mariadb $ sudo systemctl status mariadb ・・・ Loaded: loaded (/usr/lib/systemd/system/mariadb.service; enabled; vendor preset: disabled) Active: active (running) since Fri 2020-11-13 07:02:36 UTC; 6s ago ・・・
接続してバージョン確認してみる。
$ mysql -u root MariaDB [(none)]> select version(); +----------------+ | version() | +----------------+ | 5.5.68-MariaDB | +----------------+ ・・・
MySQLの場合
MySQLをインストールする場合は、リポジトリを追加してインストール。
今回は、バージョン「5.7」をインストールしてみる。
$ sudo yum -y localinstall https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm $ sudo yum -y install mysql-community-server
バージョン確認。
$ mysqld --version mysqld Ver 5.7.32 for Linux on x86_64 (MySQL Community Server (GPL)) $ mysql --version mysql Ver 14.14 Distrib 5.7.32, for Linux (x86_64) using EditLine wrapper
自動起動の設定は既に有効みたいなので、
$ sudo systemctl is-enabled mysqld enabled
起動だけする。
$ sudo systemctl start mysqld $ sudo systemctl status mysqld ・・・ Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled) Active: inactive (dead) ・・・
接続してバージョンを確認しようとするが、エラーになる。
$ mysql -u root ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
MySQL5.7からはインストール時に勝手に初期パスワードが設定されるみたいなので、 ログをgrepしてパスワードを確認。
$ sudo cat /var/log/mysqld.log | grep "temporary password" 2020-11-13T07:12:10.973965Z 1 [Note] A temporary password is generated for root@localhost:(ここにパスワードが書かれている)
パスワードを入力すれば、接続はできるが、パスワードを変えろ、と怒られる。
$ mysql -u root -p Enter password:(ログファイルに書かているパスワードを入力) > select version(); ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
mysql_secure_installationでrootのパスワードを変更。
$ mysql_secure_installation
聞かれる内容 | 入力する値 |
---|---|
Enter password for user root | ログに書かれているパスワード |
New password | 新しいパスワード |
Re-enter new password | 新しいパスワード |
Change the password for root ? | なんかrootのパスワードの変更を聞かれるが、さっき入力したばかりなので「n」 |
Remove anonymous users? | お好みで |
Disallow root login remotely? | お好みで |
Remove test database and access to it? | お好みで |
Reload privilege tables now? | すぐに反映させたいので「y」 |
これで、接続してバージョンが確認できた。
$ mysql -u root -p Enter password:(新しく設定したパスワード) mysql> select version(); +-----------+ | version() | +-----------+ | 5.7.32 | +-----------+
文字コードの設定
デフォルトでは、character_set_databaseやcharacter_set_serverがlatin1になっており、 UTF-8にしておいたほうがいいみたいなので、
MariaDB [(none)]> show variables like "chara%"; +--------------------------+----------------------------+ | Variable_name | Value | +--------------------------+----------------------------+ | character_set_client | utf8 | | character_set_connection | utf8 | | character_set_database | latin1 | | character_set_filesystem | binary | | character_set_results | utf8 | | character_set_server | latin1 | | character_set_system | utf8 | | character_sets_dir | /usr/share/mysql/charsets/ | +--------------------------+----------------------------+
設定ファイルに下記のような感じで追記する。
※MySQLの場合は「/etc/my.cnf」
$ sudo vi /etc/my.cnf.d/server.cnf $ sudo vi /etc/my.cnf ・・・ [mysqld] ・・・ character-set-server=utf8 [client] default-character-set=utf8
再起動するとUTF-8になる。
$ sudo systemctl restart mariadb
MariaDB [(none)]> show variables like "chara%"; +--------------------------+----------------------------+ | 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/ | +--------------------------+----------------------------+
ただ、MariaDBの公式(https://mariadb.com/ja/resources/blog/install-mariadb-server-centos7/) には、[mariadb]のセクションに書くように書かれてたり、
[mariadb] character-set-server=utf8
文字コードは「utf8」ではなく「utf8mb4」のほうがいい、 みたいな記事も見かけるので、
文字コード周りはもう少し勉強が必要。