Windows10にVagrantとVirtualBoxでCentOSの仮想環境を構築⑤MySQLのインストール
CentOSに標準でインストールされているDBはMariaDBというらしいが、私はMySQLを使いたい!
参考URL:https://weblabo.oscasierra.net/installing-mysql57-centos7-yum/
https://qiita.com/nooboolean/items/7efc5c35b2e95637d8c1
①mariaのインストール確認 ※mariaが入っているとMySQLインストールできない(?)
yum list maria*
→Installed Packagesにたくさん出てくる。
②mariaDB ライブラリとデータフォルダを削除
yum remove mariadb-libs →その後yum list installed | grep mariadb-libsで無ければOK
sudo rm -r /var/lib/mysql/ →そんなファイルはありません。lsで見ても無いのでOK
③公式が用意しているrpmファイルをインストール
③-1. 公式のCommunity Edition→MySQL Yum Repository→Red Hatの該当バージョンのダウンロードボタン→下の「No thanks just download」のURLをコピー
③-2. インストール
sudo yum localinstall https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
④リポジトリに反映されているかを確認
yum info mysql-community-server
⑤インストール
yum install -y mysql-community-server
⑥インストールの確認
mysqld --version
⑦起動確認
sudo systemctl start mysqld
sudo systemctl status mysqld →runningならOK
sudo systemctl stop mysqld
<初期設定へ>
⑧パスワードの設定
⑧-1. 初期パスワードの確認
cat /var/log/mysqld.log | grep root
⑧-2. 上記パスワードでログイン
mysql -u root -p
ログインできたけどパスワード変更ができない。ログアウトして止める。
対策
https://qiita.com/StaticProgramer/items/fad0018ab23b9b1ba3ff
https://dev.mysql.com/doc/refman/8.0/en/resetting-permissions.html
・サーバのプロセスIDを含む.pidファイルを見つける。
だいたい下記のどこかにあるはず。
/var/lib/mysql/, /var/run/mysqld/, and /usr/local/mysql/data/、/var/run/mysqld/はあったけど中には何もないことが分かった。
linuxのrootユーザがmysqldを起動するのはセキュリティ上良くないから、通常はmysqlユーザがmysqldを起動する。
しかし、MySQLドキュメントの通りMySQLサーバを起動する際、Linuxのrootユーザならば、下記オプションをつけて起動すると失敗。
systemctl start mysqld --user=mysql
systemctl: option '--user' doesn't allow an argument
今のユーザはvagrantだった!←whoで確認可能。
https://oshiete.goo.ne.jp/qa/8812503.html
普通にインストールとかしていれば、mysqldの起動は自動でmysqlユーザがやっているらしい。
sudo つけずにsystemctl start mysqldやると↓になった。
Authentication is required to manage system services or units.
Authenticating as: root
・sudo systemctl start mysqld をやって ps -u mysql をやってみる
mysqlがmysqldをやっていたので、sudo systemctl start mysqld で問題なし。
⑧-3. 公式のやり方通り、--skip-grant-tables オプションをつけてmysqlを起動する
・sudo vi /etc/my.cnf
・[mysqld]ブロック末尾に↓を追記。
skip-grant-tables
参考:https://qiita.com/metheglin/items/4a1101bd24bf73a0ec6d
・sudo systemctl start mysqld
⑧-4. ログインしてパスワード変更
FLUSH PRIVILEGES;
ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass';
⑧-5. ログアウト、停止して、⑧-3の追記分を削除。
⑨文字コードの確認と変更
⑨-1. 再度起動、ログイン
mysql -u root -p
→パスワードを聞かれたら入力
⑨-2. show variables like "chara%";
全部utf8になってればOK。
(ほとんどutf8mb4だけど多分大丈夫??)
※systemctl enable mysqldでCentOS起動に合わせた自動起動の設定も可能
DBインストール完了!!
と思ったら、ログインできなくなってしまった。
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
下記を参考にいろいろやる。
https://teratail.com/questions/53026
systemctl stop mysqld
systemctl set-environment MYSQLD_OPTS="--skip-grant-tables"
systemctl start mysqld
mysql -u root
でもupdateできなくてあきらめる。
がちゃがちゃやってたら、再起動してもmysql -u rootだけで入れるようになった?
のでとりあえずok