Shell執行MySQL指令碼錯誤:Operation CREATE USER failed for 'user'@'%'
阿新 • • 發佈:2018-11-09
在Docker裡面安裝的MySQL5.7,在編寫Shell指令碼執行時遇如題之BUG。
解決問題:
drop user 'user'@'%' ;
flush privileges;
create user 'user'@'%' identified by '123456';
可執行MySQLShell 指令碼示例:
#!/bin/bash #file:docker_mysql_create_table.sh #company:cvnavi.com #author:Pengjunlin echo "當前執行檔案......$0" # Mysql資料庫相關配置 mysql_host="localhost" mysql_port="3366" mysql_database_name="filecache" mysql_root_user_name="root" mysql_root_user_pwd="root" mysql_remote_user_name="rtvsweb" mysql_remote_user_pwd="rtvs2018" # 資料庫表名大寫與程式一致 mysql_table_name="AVINFO"; # 進入mysql控制檯 預設使用者是root echo "Docker Mysql控制檯建立資料庫...." # 為root使用者設定密碼 echo "Docker Mysql控制檯為root使用者設定密碼....$mysql_root_user_pwd" sql_alter_user="ALTER USER '$mysql_root_user_name'@'$mysql_host' IDENTIFIED BY '$mysql_root_user_pwd'" mysql -u$mysql_root_user_name -p$mysql_root_user_pwd -P$mysql_port -e"$sql_alter_user" #刪除可能重複的遠端使用者 echo "Docker Mysql控制檯刪除可能重複的遠端使用者....$mysql_remote_user_name" sql_create_user="DROP USER '$mysql_remote_user_name'@'%' " mysql -u$mysql_root_user_name -p$mysql_root_user_pwd -P$mysql_port -e"$sql_create_user" # 重新整理資料庫許可權 echo "Docker Mysql重新整理使用者許可權...." sql_flush_privileges="flush privileges" mysql -u$mysql_root_user_name -p$mysql_root_user_pwd -P$mysql_port -e"$sql_flush_privileges" # 新增遠端登入使用者 echo "Docker Mysql控制檯建立遠端使用者....$mysql_remote_user_name" sql_create_user="CREATE USER '$mysql_remote_user_name'@'%' IDENTIFIED WITH mysql_native_password BY '$mysql_remote_user_pwd'" mysql -u$mysql_root_user_name -p$mysql_root_user_pwd -P$mysql_port -e"$sql_create_user" #為遠端賬號新增許可權 echo "Docker Mysql控制檯為遠端賬號新增許可權.... *.* TO '$mysql_remote_user_name'@'%'" sql_grant_user="GRANT ALL PRIVILEGES ON *.* TO '$mysql_remote_user_name'@'%'" mysql -u$mysql_root_user_name -p$mysql_root_user_pwd -P$mysql_port -e"$sql_grant_user" # 建立資料庫 echo "Docker Mysql控制檯建立資料庫.... $mysql_database_name" sql_create_database="CREATE DATABASE IF NOT EXISTS $mysql_database_name" mysql -u$mysql_root_user_name -p$mysql_root_user_pwd -P$mysql_port -e"$sql_create_database" # 重新整理資料庫許可權 echo "Docker Mysql重新整理使用者許可權...." sql_flush_privileges="flush privileges" mysql -u$mysql_root_user_name -p$mysql_root_user_pwd -P$mysql_port -e"$sql_flush_privileges" # 確定使用的資料庫 echo "Docker Mysql確定使用的資料庫....$mysql_database_name" sql_select_use_db="USE $mysql_database_name" mysql -u$mysql_root_user_name -p$mysql_root_user_pwd -P$mysql_port -e"$sql_select_use_db" #使用者建立Mysql資料庫指令碼 echo "Docker Mysql控制檯建立資料庫表.... $mysql_table_name" sql_create_table="USE $mysql_database_name;CREATE TABLE IF NOT EXISTS $mysql_table_name ( F_ID varchar(255) NOT NULL, F_SIM varchar(20) NOT NULL, F_CHANNEL int(11) NOT NULL, F_ALARM decimal(18,0) NOT NULL, F_STORAGE_TYPE int(11) NOT NULL, F_STREAM_TYPE int(11) NOT NULL, F_START_TIME decimal(20,0) NOT NULL, F_END_TIME decimal(20,0) NOT NULL, F_FILE_PATH varchar(255) NOT NULL, F_FILE_SIZE decimal(18,0) NOT NULL, F_DATA_TYPE int(11) default NULL, PRIMARY KEY (F_ID) ) ENGINE=InnoDB DEFAULT CHARSET=utf8" mysql -u$mysql_root_user_name -p$mysql_root_user_pwd -P$mysql_port -e"$sql_create_table"