###ERROR 1044 (42000)必要な権限がないエラー
ERROR 1044 (42000): Access denied for user 'user'@'localhost' to database 'dotinstall_db'
ちゃんと教材通りに書いたのに・・・
###ERROR 1064 (42000)構文エラー
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 'identified by 'test'' at line 1
ちゃんと教材通りに書いたのに・・・
バージョンによって構文が変わるの?と思って調べて行きました。
結局ERROR 1064 (42000)
をそのまんまググりつつ、ユーザの追加
についてMySQL 5.6 リファレンスマニュアル
がヒットするのでそれを参照
###ドットインストールの通りにやったのに・・・
mysqlの使い方をドットインストールで勉強していましたがうまく行きませんでした。
###バージョンの確認
自分のバージョン
// phpのバージョン確認
$ php -v
PHP 7.4.8
// mysqlのバージョン確認
$ mysql --version
mysql Ver 8.0.19 for osx10.15 on x86_64 (Homebrew)
ドットインストールのバージョン
PHP 5.6.11
mysql 14.14 Distrib 5.5.44, for Linux (x86_64) using readline 5.1
###ERROR 1064 (42000)は構文エラー
mysqlのバージョンがドットインストールのバージョンと違うことによるのか、ドットインストールのコマンドを使っても発生していた。
- ユーザの追加
ドットインストールでは
mysql> grant all on dotinstall_db.* to username@localhost identified by password
自分のバージョンでは
mysql> CREATE USER 'username'@'localhost' IDENTIFIED BY 'password';
(これだけじゃ足りなて、次の権限の付与が別で必要)
all
かall privileges
かの違いがあるよう。
また、with grant option
というのも必要らしい。
https://www.postgresql.jp/document/8.0/html/sql-grant.html
これによると
WITH GRANT OPTIONが指定されると、権限受領者はその後、他のユーザにその権限を与えることができます。 グラントオプションがないと、受領者はこれを行うことができません。 現時点では、グラントオプションは個々のユーザに対してのみ与えることができ、グループやPUBLICには与えることができません。
ということらしい。
とりあえず書いといた方が良いということかしら。
- 権限の付与
mysql> grant all privileges on dotinstall_db.* to 'username'@'localhost'
-> with grant option;
上記二つ、つまり
mysql> CREATE USER 'username'@'localhost' IDENTIFIED BY 'password';
mysql> grant all privileges on dotinstall_db.* to 'dbuser'@'localhost'
-> with grant option;
これらを実行することで、
$ mysql -u username -p
を実行してパスワードを入力すると入れました。
###感想
ほんと一つずつうまく行かなくて全然進まない。
なんか他の環境を使えばもっと楽になるらしいですが、しっかり理解したいので、ローカル環境を使おうと思っているけど、
- バージョンごとの違い
- ディレクトリの違い
などでとにかくつまづく。でもその辺りの違いをしっかり理解していなければ、状況ごとに柔軟に対処できなくなると思うので、なんとか解決しながら進みたい!と決意。