はじめに
Dockerの上に作成したMySQLのコンテナの中でselect password
を実行したところ、Syntaxエラーが表示されて処理ができませんでした。
今回は、こちらの対処方法について書きます。
今回は、パスワードハッシュを取得するためだけにMySQLのコンテナを作成していることが前提になります。
(パスワードハッシュが取得できたらMySQLのコンテナは削除)
環境
% docker -v
Docker version 20.10.0, build 7287ab3
%
- MySQLのバージョン(8.0.29)
mysql> SELECT PASSWORD('mypass');
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 '('mypass')' at line 1
mysql> select @@version;
+-----------+
| @@version |
+-----------+
| 8.0.29 |
+-----------+
1 row in set (0.00 sec)
mysql>
エラー内容
パスワードハッシュを作成しようとした際に以下エラーが発生。
mysql> select password('98mfa9af;iafj');
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 '('98mfa9af;iafj')' at line 1
mysql>
対処
MySQLのコンテナを古いバージョンで作成し直してコマンドを再実行。
- バージョン(5.7.38)
mysql> select @@version;
+-----------+
| @@version |
+-----------+
| 5.7.38 |
+-----------+
1 row in set (0.00 sec)
mysql>
- コマンド再実行
mysql> select password('mypass')
-> ;
+-------------------------------------------+
| password('mypass') |
+-------------------------------------------+
| *6C8989366EAF75BB670AD8EA7A7FC1176A95CEF4 |
+-------------------------------------------+
1 row in set, 1 warning (0.00 sec)
mysql>
補足:Dockerコンテナの再作成について
以下の記事をご覧下さい。
原因
password関数がMySQLのver5.6.7時点で廃止されたため。
参考記事