はじめに
サーバーサイドについて詳しくないのですが、強制的にやらざるおえなくなったので、メモ程度に残しときます。
(めっちゃ躓いた)
※詳しくないので、「~ぽい」という表現が多いです。
環境
- Windows10 home
- ubuntu18.04.1LTS
- MySQL 5.7
やったこと
まずダウンロード
$ sudo apt install mysql-server mysql-client
mysql-serverだけでもいいぽい
MySQL5.7の場合、初期rootパスが生成されるらしい
ソースはここのサイト
/var/log/mysqld.log
に書いてあるらしいけど、存在しない。
初期パスワードを生成する
存在しないので、生成するしかない。
mysqld --initialize
を行うとroot初期パスワードが生成されるらしい(参考サイトの場所忘れた…)
WSL Ubuntu 18.04 に MySQL 5.7 をインストールする
を参考にやってみる
サーバー起動
$ sudo service mysql start
* Starting MySQL database server mysqld
No directory, logging in with HOME=/
ホームディレクトリーないといわれるけど、serverは起動した
エラーはいったん放置
初期化
$ sudo mysqld --initialize
--initialize specified but the data directory has files in it. Aborting.
とエラーが出たのでサイト通り
sudo rm -rf /var/lib/mysql/
と削除。もともとディレクトリがあるとダメぽい
もう一回初期化
$ sudo mysqld --initialize
なにも出ないのでうまくいったんでしょう
初期ルートパスを所得
$ grep 'temporary password' /var/log/mysql/error.log
このパスワードを使って、rootパスワードを変更していく
rootパスワードを変更する
パスワードを変更するには、mysql_secure_installation コマンドを実行する
個人開発レベルならしなくてもいいらしいけど、これをやるのが正しいぽい
$ sudo mysql_secure_installation
を実行、ルートパスワードが聞かれたり、聞かれなかったりするけど、
聞かれたら今さっきのtemporary password
を入力する
あとはいろいろ聞かれる
よくわからないので、このサイトを参考にした
MySQL 5.7 をインストールしたら最初に行うセットアップ
これで自分で設定したルートパスでログインできる。
MySQLにログインする
$ sudo mysql -u root -p
mysql_secure_installation
で指定したパスワードを入力
無事入れたら、本当にrootで入ってるか確認する
mysql> status
Connection id: 20
Current database:
Current user: root@localhost
SSL: Not in use
Current pager: stdout
Using outfile: ''
Using delimiter: ;
Server version: 5.7.24-0ubuntu0.18.04.1 (Ubuntu)
Protocol version: 10
Connection: Localhost via UNIX socket
Server characterset: latin1
Db characterset: latin1
Client characterset: utf8
Conn. characterset: utf8
UNIX socket: /var/run/mysqld/mysqld.sock
Uptime: 21 min 1 sec
Threads: 1 Questions: 15 Slow queries: 0 Opens: 115 Flush tables: 1 Open tables: 34 Queries per second avg: 0.011
--------------
rootで入れたのでquit
してmysqlから出る
MySQLを停止させる
sudo service mysql stop
なぜか停止できない…
sudo service mysql status
mysqladmin: connect to server at 'localhost' failed
error: 'Access denied for user 'debian-sys-maint'@'localhost' (using password: YES)'
debian-sys-maintユーザーが拒否されてるぽい
ていうか、debian-sys-maintって誰だよ
ということで、調べてみた。
[MySQL]debian-sys-maintっていうユーザは消しちゃダメ
ubuntuさんが勝手につくったユーザーぽい。
エラーを解決する
Debian mysql再起動時にAccess denied for user 'debian-sys-maint'
を参考にやってみる
debian-sys-maintさんのパスワードがわかりにくいので書き換える
vimしか使えないのでvimで書き換える。
$vim /etc/mysql/debian.cnf
[client]
host = localhost
user = debian-sys-maint
password = [ここを好きなパスワードに書き換える]
socket = /var/run/mysqld/mysqld.sock
[mysql_upgrade]
user = debian-sys-maint
password = [ココを好きなパスワードに書き換える]
socket = /var/run/mysqld/mysqld.sock
basedir = /usr
またmysqlに入る
$ sudo mysql -u root -p
debian-sys-maintさんに権限を与える。
> GRANT ALL PRIVILEGES ON *.* TO 'debian-sys-maint'@'localhost' IDENTIFIED BY '[指定したパスワード]' WITH GRANT OPTION;
GRANTについてはMysql関係の備忘録
でquit
してからの
sudo service mysql stop
停止できた!!
大変!!
mysqlのホームディレクトリを指定してあげる
* Starting MySQL database server mysqld
No directory, logging in with HOME=/
のエラーを解決する
sudo usermod -d /var/lib/mysql mysql
を実行
でこのエラーは出なくなるはず。
サーバー停止してから実行しないとエラーがでる
参考資料
【Ubuntu 18.04 LTS Server】MySQLサーバを動かす
最後に
MySQL5.7、はじめていじってみたのですがバージョンアップしてセキュリティ面が強くなったせいか初期設定で躓く人が多いらしいです。
私の場合、よくわかってないので調べるのが大変でした
追記
結局、動作が不安定だったので、windowsのMysqlを入れました。