あなごです。
ポートフォリオを作り始めてから1ヶ月以上MySQLに苦しめられております。
今回はエラーが発生して苦しめられているときによく使うコマンドをまとめました。
インストール・サーバー立ち上げ編 (Homebrew内の場合)
$ brew install mysql@8.1
Homebrew経由でMySQLをインストールできます。
@先はバージョン名。
brew services start mysql
Macの再起動後に自動的にSQLが再起動される
$ mysql.server start
Macの再起動後に自動的にSQLが再起動されない
$mysql -u root -p
$mysql -u root -h 127.0.0.1
MySQL、起動。 (-p の方はパスワードを求められます)
$ which mysql
MySQLがどこにあるか教えてくれます。
cd /opt/homebrew/var/mysql/
mysqlの場所に移動
$ brew list
SQL内でMySQLが入っているかどうかを確認できます。
$ mysql --version
MySQLのバージョンが確認できます。
mysqld --help --verbose | grep my.cnf
my.cnfという設定ファイルがどこにあるか確認できます。
左上が一番優先順位が高いです。
/etc/my.cnf /etc/mysql/my.cnf /opt/homebrew/etc/my.cnf ~/.my.cnf my.cnf, $MYSQL_TCP_PORT, /etc/services, built-in default
sudo vi /etc/my.cnf
MySQLの設定ファイルに書き込めます。
MySQL操作編
mysql> select user, host from user;
MySQL内のユーザー一覧を閲覧することができます。
+------------------+-----------+ | user | host | +------------------+-----------+ | mysql.infoschema | localhost | | mysql.session | localhost | | mysql.sys | localhost | | root | localhost | +------------------+-----------+
$ mysql.server stop
MySQLのサーバーを止めます。
$brew services stop mysql
MySQLのサービスを止めることができます。
エラー編
いつもERROR! The server quit without updating PID file というエラーがよく発生する
$ sudo chown -R _mysql:_mysql /opt/homebrew/var/mysql* $ sudo mysql.server start
PIDファイルのあるディレクトリに権限を与えてからサーバーを起動させたら治った。
Can't connect to local MySQL server through socket '/tmp/mysql.sock'
これも親の顔より見慣れたエラー。
$sudo chown mysql:mysql /tmp $sudo mysql.server start $ mysql -u root -p
tmpディレクトリに権限を与えて、これで治りました。
sudo scutil --get ComputerName
sudo scutil --get LocalHostName
sudo scutil --get HostName
ホスト名を確認できる。
ps -ef | grep mysql
プロセスが立ち上がっているかどうか確認用。
sudo kill -TERM ○○○○(プロセスの番号)
プロセスを落とす
個人的に便利だなと感じたコマンド。
tail -1000 /opt/homebrew/var/mysql/$(hostname).err | grep Warning
↓こんな感じでエラーメッセージがすっきり見れるようになっております。
かなしいね。
2023-10-14T03:42:07.049119Z 0 [Warning] [MY-010068] [Server] CA certificate ca.pem is self signed. 2023-10-14T03:42:07.050328Z 0 [Warning] [MY-011810] [Server] Insecure configuration for --pid-file: Location '/opt/homebrew/var/mysql' in the path is accessible to all OS users. Consider choosing a different directory. 2023-10-14T03:42:17.465903Z 0 [Warning] [MY-010097] [Server] Insecure configuration for --secure-file-priv: Current value does not restrict location of generated files. Consider setting it to a valid, non-empty path. 2023-10-14T03:42:17.467963Z 0 [Warning] [MY-010159] [Server] Setting lower_case_table_names=2 because file system for /opt/homebrew/var/mysql/ is case insensitive 2023-10-14T03:42:17.729950Z 0 [Warning] [MY-010068] [Server] CA certificate ca.pem is self signed. 2023-10-14T03:42:17.731167Z 0 [Warning] [MY-011810] [Server] Insecure configuration for --pid-file: Location '/opt/homebrew/var/mysql'/usr/local/opt/mysql@5.6/bin/mysql.server start/usr/local/opt/mysql@5.6/bin/mysql.server start
mysqld --upgrade=FORCE
MySQLサーバーに強制的にアップグレードを行う。
brew uninstall mysql
MySQLをアンインストールして楽になりたい時のコマンド
関連ファイルを削除したいときは、下記のコマンドを片っ端から入力してます。
sudo rm -rf /usr/local/var/mysql/ sudo rm -rf /usr/local/var/mysql sudo rm /usr/local/mysql sudo rm -rf /usr/local/Cellar/mysql sudo rm -rf /usr/local/bin/mysql sudo rm -rf /usr/local/var/mysql sudo rm -rf /usr/local/share/mysql sudo rm -rf /usr/local/opt/mysql sudo rm -rf /etc/my.cnf sudo rm -rf /opt/homebrew/var/mysql sudo rm -rf /opt/homebrew/etc/my.conf sudo rm -rf /opt/homebrew/etc/my.conf.default