UMINにMySQLを設置するときに

2022年2月11日にUMINのPLAZAが新サーバーになり、MySQLを再度インストールしたときの覚書です。

UMIN | 機能優先一般公開用ホームページPLAZA

下記のサイトを参考にさせていただきました。

UMINサーバにMySQLを設置する方法 https://plaza.umin.ac.jp/ta/archives/20200428-0500.html#ref-6

UMINサーバー に WordPress を導入する https://qiita.com/shoei05/items/3fb170ff5c03f9f6f8a7

準備

FTPクライアントでUMINサーバにログインして、以下のディレクトリを作ります。
/home/account-name/public_html/usr/local/src

  • mysqlソースファイル (mysql-5.7.36を使用)
  • boostライブラリファイル (boost-1.72_0を使用)
  • ncursesライブラリファイル (ncurses-6.2を使用)
  • opensslライブラリファイル (openssl-1.1.1fを使用)
  • cmakeライブラリ

圧縮ファイルを展開

$ cd /home/account-name/public_html/usr/local/src

に移動して圧縮ファイルを展開する。

$ tar xvfz mysql-5.7.36.tar.gz

$ tar xvfz boost_1_78_0.tar.gz

$ tar xvfz ncurses-6.2.tar.gz

$ tar xvfz openssl-1.1.1f.tar.gz

OPENSSLをインストール

/usr/local/src/openssl_1.1.mに移動してから下記を実行

$ ./config –prefix=/home/account-name/public_html/usr/local/openssl –openssldir=/home/account-name/public_html/usr/local/openssl shared

$ make

$ make install

MySQLのversion

mysql-5でないとmakeできない。

mysql-8ではだめでした。

ここでは、mysql-5.7.36を使用しています。

MySQLのインストール

$ cmake . -DDOWNLOAD_BOOST=1 -DWITH_BOOST=/home/account-name/public_html/usr/local/src/boost_1_27_0/boost -DCMAKE_INSTALL_PREFIX=/home/account-name/public_html/usr/local/mysql -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_SSL=/home/account-name/public_html/usr/local/openssl

$ make && make install

ポート番号

未使用のポート番号を探しておく必要があります。

下記のコマンドで使用されているポートを調べます。

$ netstat -nat | grep LISTEN | awk ‘{print $4}’

使用されているポートがランダムに表示されてしまいます。Excelなどに移して、並び替えて空いているポートを探してください。

127.0.0.1:XXXX や :::XXXX 等が使用されているところです。

ポート番号でエラーがあると

Starting MySQL.. ERROR! The server quit without updating PID file (/home/{your account}/tmp/mysql.pid).

のように表示されます。

.htaccessファイル

/home/account-name/のディレクトリに下記の内容の.htaccessファイルを置いてください。

port_numberは、未使用のポート番号です。

php_value mysql.default_port port_number
php_value mysql.default_socket /home/account-name/tmp/mysql.sock

.my.cnfファイル

/home/account-name/のディレクトリに下記の内容の.my.cnfファイルを置いてください。

[client] port=port_number
socket= /home/account-name/tmp/mysql.sock

[mysqld]
port=port_number
socket= /home/account-name/tmp/mysql.sock
key_buffer_size=16M
max_allowed_packet=8M
pid-file=/home/account-name/tmp/mysql.pid
socket = /home/account-name/tmp/mysql.sock
datadir= /home/account-name/tmp/mysql_data/
skip-character-set-client-handshake
character-set-server = utf8
collation-server = utf8_general_ci
explicit_defaults_for_timestamp = 1

[mysqldump]
quick

[mysqld_safe]
log-error=/home/account-name/tmp/mysql_data/log/mysqld.log
pid-file=/home/account-name/tmp/mysql_data/mysqld/mysqld.pid

ここで[mysqld]の最後に加えてある

explicit_defaults_for_timestamp = 1

は、

下記のエラー対策です。
[Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use –explicit_defaults_for_timestamp server option (see documentation for more details).

初期化

/home/account-name/tmp

を空の状態で作成する。

$ /home/account-name/public_html/usr/local/mysql/bin/mysqld –initialize

コマンドを実行

最後に表示された、「…for root@localhost: YYYyyyYYYyyy」の12桁の文字列「YYYyyyYYYyyy」が初期パスワードです。

dataディレクトリーの作成

/home/account-name/tmp/mysql_data/log/
/home/account-name/tmp/mysql_data/mysqld/

MySQLを起動しようとして

[ERROR] –initialize specified but the data directory has files in it. Aborting.

がでる場合には、/home/{account}/tmp/mysql_data/の中にファイルやディレクトリは入れないようにしてください。

Mysqlの起動

$ /home/account-name/public_html/usr/local/mysql/support-files/mysql.server start

次に以下のコマンドでMySQLにログイン

$ /home/account-name/public_html/usr/local/mysql/bin/mysql -u root -p

パスワードは初期パスワード

以下のコマンドで、パスワードを変更する。

mysql> set password=’ZZZZZZZZZZZZ’;

いったん quit;でログアウト。

セキュアモードでログインして、質問に回答する。

$ /home/account-name/public_html/usr/local/mysql/bin/mysql_secure_installation

  1. Change the password for root ? ((Press y|Y for Yes, any other key for No) : n
  2. Remove anonymous users? (Press y|Y for Yes, any other key for No) : y
  3. Disallow root login remotely? (Press y|Y for Yes, any other key for No) : y
  4. Remove test database and access to it? (Press y|Y for Yes, any other key for No) : n
  5. Reload privilege tables now? (Press y|Y for Yes, any other key for No) : y

LOGの場所

/home/{account}/tmp/mysql_data/log/mysqld.logがあります。

データベース名とユーザ名を設定

データベース名:database-name、ユーザ名:user-name、パスワード:password、として記載しているので、適宜変更してください。

$ /home/account-name/public_html/usr/local/mysql/bin/mysql -u root -p
mysql> create database database-name;

mysql> create user ‘user-name’@’localhost’ identified by ‘password’;

mysql> grant all privileges on database-name.* to ‘user-name’@’localhost’;

mysql> select user, host, db from mysql.db;

mysql> quit;

設定できたか確認

設定したユーザ名でログインして確認。

$ /home/account-name/public_html/usr/local/mysql/bin/mysql -u user-name -p

mysql> use database-name;
Database changed
mysql> select database();
+————+
| database() |
+————+
| database-name |
+————+
1 row in set (0.00 sec)

mysql> show tables;
Empty set (0.00 sec)

mysql> show variables like ‘port’;
+—————+——-+
| Variable_name | Value |
+—————+——-+
| port | port_number |
+—————+——-+
1 row in set (0.05 sec)

mysql> quit;

rootでログインする場合

$/home/account-name/public_html/usr/local/mysql/bin/mysql -u root -p

ここでenterを押すと

Enter password:

と出るので、パスワードを入力してください。

すると、

Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 6
Server version: 5.7.36 Source distribution

Copyright (c) 2000, 2021, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the current input statement.

mysql>

となります。

コメント

タイトルとURLをコピーしました