はじめに
mysqlが起動しないエラーです。
MySql version8です。
やったこと
mysqlを起動
$ mysql -u root -p
エラー
socket '/tmp/mysql.sock' (2)を通じて、local MySQL serverに接続できない
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
試したこと
①(1)新しいファイルを作成
$ sudo touch mysql.sock
$ sudo mysql.server start
PIDファイルを更新せずにサーバーが終了する
ERROR! The server quit without updating PID file (/usr/local/var/mysql/xxxxx.local.pid).
①(2)新しいファイル作成
コマンドを少し変えて、試してみた。
$ sudo touch /tmp/mysql.sock
コマンド少し変えても、同じエラーがでた。
$ sudo mysql.server restart
ERROR! MySQL server PID file could not be found!
Starting MySQL
. ERROR! The server quit without updating PID file (/usr/local/var/mysql/****.local.pid).
②PIDファイルを確認
ファイルがない
$ ls -la /usr/local/var/mysql/xxxxx.local.pid
ls: /usr/local/var/mysql/xxxxx.local.pid: No such file or directory
③権限を与える
$ sudo chown -R _mysql:_mysql /usr/local/var/mysql
起動する
$ mysql -u root -p
socket '/tmp/mysql.sock' (2)を通じて、local MySQL serverに接続できないエラー。
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
④mysqlを再インストール
$ brew uninstall mysql
Uninstalling /usr/local/Cellar/mysql/8.0.15... (267 files, 234.6MB)
permission deniedと、ERROR! The server quit without updating PID fileのエラー
mysql.server start
Starting MySQL
./usr/local/Cellar/mysql@5.7/5.7.25/bin/mysqld_safe: line 144: /usr/local/var/mysql/****.local.err: Permission denied
/usr/local/Cellar/mysql@5.7/5.7.25/bin/mysqld_safe: line 144: /usr/local/var/mysql/****.local.err: Permission denied
/usr/local/Cellar/mysql@5.7/5.7.25/bin/mysqld_safe: line 198: /usr/local/var/mysql/****.local.err: Permission denied
/usr/local/Cellar/mysql@5.7/5.7.25/bin/mysqld_safe: line 144: /usr/local/var/mysql/****.local.err: Permission denied
ERROR! The server quit without updating PID file (/usr/local/var/mysql/****.local.pid).
⑤$ brew services restart mysqlでリスタート
$ brew services restart mysql
==> Tapping homebrew/services
Cloning into '/usr/local/Homebrew/Library/Taps/homebrew/homebrew-services'...
remote: Enumerating objects: 17, done.
remote: Counting objects: 100% (17/17), done.
remote: Compressing objects: 100% (14/14), done.
remote: Total 17 (delta 0), reused 13 (delta 0), pack-reused 0
Unpacking objects: 100% (17/17), done.
Tapped 1 command (50 files, 62.6KB).
==> Successfully started `mysql` (label: homebrew.mxcl.mysql)
$ mysql.server start
$ mysql.server start
Starting MySQL
SUCCESS!
`
`
`
$ 2019-03-17T04:54:20.6NZ mysqld_safe A mysqld process already exists
$ mysql -u root -p
$ mysql -u root -p
Enter password:
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
リスタートしてみて、サーバー立ち上げてみたら、SUCCESSになった。$ mysql -u root -p
したけど、ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
のエラーが出た。
参考記事:
https://sankame.github.io/blog/2017-11-20-fail_to_connect_mysql/
⑥$ mysqld_safe --skip-grant-tables &
参考記事:https://qiita.com/unbabel/items/b784459356686641dabe
$ mysqld_safe --skip-grant-tables &
[1] 8341
***noMacBook-puro:contents_app ****$ 2019-03-17T05:14:10.6NZ mysqld_safe Logging to '/usr/local/var/mysql/***noMacBook-puro.local.err'.
2019-03-17T05:14:10.6NZ mysqld_safe A mysqld process already exists
mysql -u root
mysql -u root
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 8.0.15 Homebrew
Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.
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.
use mysql;
mysql> use mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
UPDATE user SET Password=PASSWORD('mynewpassword') WHERE User='root';
mysql> UPDATE user SET Password=PASSWORD('mynewpassword') WHERE User='root';
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '('mynewpassword') WHERE User='root'' at line 1
■エラーコード:1064
■SQLSTATE:42000
■エラーメッセージ例:
You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near [入力したSQL文の一部].
■エラーの原因:
SQLの文法に誤りがある。
■エラーへの対処法:
MySQLのバージョンとマニュアルを確認し、SQL文を見直す。 こちらもクォーテーションなど区切り文字には注意が必要。
引用元:http://proengineer.internous.co.jp/content/columnfeature/7054#section206
ということなので、
UPDATE user SET Password=PASSWORD('mynewpassword') WHERE User='root';
の文法に誤りがあることがエラーの原因。
⑦ALTER USER 'root'@'localhost' identified BY 'hoge';
でmysqlのrootのパスワードを変更。
参照記事:http://www-creators.com/archives/5574
mysql > ALTER USER 'root'@'localhost' identified BY 'hoge';
Query OK, 0 rows affected (0.01 sec)
exitした後に、mysqlを再び起動
$ mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 11
Server version: 8.0.15 Homebrew
Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.
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起動できた。
パスワード変更時のエラーの原因
UPDATE user SET Password=PASSWORD('mynewpassword') WHERE User='root';
のPASSWORD('mynewpassword')の()の関数は、MySQL version 5.67までしか使用できない。
MySQL 8では、ALTER USER 'root'@'localhost' identified BY 'hoge';
でパスワードを変更する。
終わりに
$ brew services restart mysql
してから、
$ mysql.server start
でmysqlが起動しました。次に、
$ mysql -u root -p
をやると、mysqlの文法エラーにぶつかりました。
このエラーは、MySqlのversion8の文法の表記のコマンドで解決できました。解決後、mysqlを起動のコマンドを打つと、無事、起動できました。
原因に対する考察
$sudo mysql.server restart
でサーバーは立ち上がらず、$ brew services restart mysql
をすると、サーバーが立ち上がったのかについて、あくまでも初心者の推測ですが、何らかの理由で、$ brew services restart mysql
で、MySQLを自動起動する必要があったみたいです。なぜ、自動起動しないとMySQLが起動しなかったのか、考えていきたいです。
・参照記事
https://qiita.com/_natsu_no_yuki_/items/ae4c94187093e4ab3cdc
https://qiita.com/carotene4035/items/e00076fe3990b9178cc0
https://qiita.com/hondy12345/items/d32ed749fb49e9da7de6
https://qiita.com/fujitora/items/d341c52706d1954cae28
https://cockscomb.hatenablog.com/entry/2014/04/05/153451