Memo/MySQL/Error

https://dexlab.net:443/pukiwiki/index.php?Memo/MySQL/Error
 

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を監視している場合にも出る
  • 解除
    mysqladmin -u root flush-hosts
  • my.cnfに設定
    vi /etc/my.cnf
    ----
    [mysqld]
    max_connect_errors=999999999
    ----
    service mysqld restart
  • 動作中のサーバに設定
    mysql -u root mysql
    mysql> show global variables like 'max_connect_errors';
    mysql> set global max_connect_errors=999999999;
    mysql> quit

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
  • /etc/my.cnfを編集。default-table-typeが無くなったのでdefault-storage-engineに変更
    -default-table-type=InnoDB 
    +default-storage-engine=InnoDB
  • 正しいファイルで上書きするか、comp_err コマンドでerrmsg.sys を作り直せばいいようだ。comp_errはrpmには入っていないのでソースから取得する

Could not initialize master info structure

  • slave開始時に以下のエラーが出る場合、リセットする
    • 18MB程のSQLをinsert後。ibdata1のサイズは増加。Data_freeは 13MB
      mysql -u root -p -D test -e  | grep Data_free
            Data_free: 10485760
  • 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 [失敗]
  • プロセスが起動している場合は停止
    service mysqld stop
    ps aux | grep -i mysql
    kill -9 pid
  • データを消していい場合は削除して初期化
    rm -rf /var/lib/mysql
    mysql_install_db --user mysql
  • /var/lib/mysql のオーナー、パーミッションも確認 mysql:mysqlになっているか
  • 再起動
    service mysqld restart

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2020-03-18 (水) 15:50:39 (10d)