Error †
Warning: Using a password on the command line interface can be insecure. †
- 現象
- myql client 5.6以降で発生
- 「-pMyPass」のようにパラメータで渡すとWarning
- mysql clientだけでも表示される
mysql --version
mysql Ver 14.14 Distrib 5.7.29, for Linux (x86_64) using EditLine wrapper
mysql -uuser1 -ppass -e "SELECT current_user()"
mysql: [Warning] Using a password on the command line interface can be insecure.
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
- 解決
- mysql5.6以降は、mysql_config_editor+「--login-path=<name>」を使う
- 環境変数: MYSQL_PWD に設定する。「ps -aue」で他ユーザからもパスワードが見えてしまう。「~/.my.cnf」中のpasswodが優先されるので注意。例: .my.cnf内のパスワードが間違っていると、MYSQL_PWDを設定しても常に失敗する
MYSQL_PWD="pass" mysql -uuser1 -e "SELECT current_user()"
# 変数への設定を手動で行いたい場合。exportが必要
read -sp "MYSQL_PWD: " MYSQL_PWD
MYSQL_PWD: ***
export MYSQL_PWD
mysql -uuser1 -e "SELECT current_user()"
- 「~/.my.cnf」に書く。デフォルトで読んでくれるが、平文は怖い。ログイン先を一つしか設定できない?
[client]
user = user1
password = pass
host = localhost
- 「--defaults-extra-file」でパスを指定する
mysql --defaults-extra-file=./my.conf
Host 'hostname' is blocked †
- max_connect_errors(default:10)以上、同一ホストから接続エラーがあった場合にブロックされる
- Amazon ELBやHAProxy等のヘルスチェックでtcp 3306を監視している場合にも出る
Specified key was too long; max key length is 767 bytes †
- インデックスに使うkeyは767 byteまでしか指定できない。
CREATE TABLE test (
id int(10) unsigned NOT NULL AUTO_INCREMENT PRIMARY KEY,
value varchar(256) NOT NULL,
UNIQUE KEY (value)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
ERROR 1071 (42000): Specified key was too long; max key length is 767 bytes
- utf8(3byte), utf8mb4(4byte)はすぐにこの上限にひっかかる。utf8は255文字、utf8mb4は191文字まで。
- utf8mb4を使う場合、サイズが大きくなりやすいので、デフォルト文字セットはutf8, 必要なテーブルのみutf8mb4にしたほうが良さそう
[ERROR] Error message file '/usr/share/mysql/english/errmsg.sys' †
- atomicリポジトリの 「mysql-server-5.5.17-1.el5.art」 では発生しなくなった
- mysql 5.1 から 5.5へアップデートした所発生した。
- 環境:CentOS 5.7 x86_64
# rpm -qa | grep mysql
mysqlclient16-5.1.57-1.el5.art
mysql-5.1.59-1.el5.art
mysql-server-5.5.16-2.el5.art
mysql-5.5.16-2.el5.art
mysqltuner-1.2.0-1.el5.art
mysql-libs-5.5.16-2.el5.art
mysql-libs-5.1.59-1.el5.art
mysqlclient15-5.0.90-1.el5.art
service mysqld restart
...
[ERROR] Error message file '/usr/share/mysql/english/errmsg.sys'
had only 641 error messages, but it should contain at least 714 error messages.
Check that the above file is the right version for this program!
[ERROR] /usr/libexec/mysqld: unknown variable 'default-table-type=InnoDB'
[ERROR] Aborting
- 正しいファイルで上書きするか、comp_err コマンドでerrmsg.sys を作り直せばいいようだ。comp_errはrpmには入っていないのでソースから取得する
Could not initialize master info structure †
- slave開始時に以下のエラーが出る場合、リセットする
- ERROR 1201 (HY000): Could not initialize master info structure; more error messages can be found in the MySQL error log
mysql> reset slave;
MySQL manager or server PID file could not be found! †
# service mysql restart
MySQL manager or server PID file could not be found! [失敗]
Starting MySQL...Manager of pid-file quit without updating [失敗]
- /var/lib/mysql のオーナー、パーミッションも確認 mysql:mysqlになっているか
- 再起動
service mysqld restart