任何人都可以调试这个bash脚本来创建mysql数据库和用户吗?

时间:2012-05-10 14:23:30

标签: mysql bash

任何人都可以告诉我为什么在运行命令后出现此错误?

root@server1:/home# ./dbcreate.sh db_team1 team1 team1password
ERROR 1133 (42000) at line 1: Can't find any matching row in the user table

这是我正在使用的脚本。

#!/bin/bash

MYSQL=`which mysql`
ROOTPASSWD=mypassword

Q1="CREATE DATABASE IF NOT EXISTS $1;"
Q2="SET PASSWORD FOR '$2'@'localhost'= PASSWORD('$3');"
Q3="GRANT ALL PRIVILEGES ON $1.* TO '$2'@'localhost' IDENTIFIED BY '$3';"
Q4="FLUSH PRIVILEGES;"
SQL="${Q1}${Q2}${Q3}${Q4}"

# Usage: $0 dbname dbuser dbpass"

$MYSQL -u root -p$ROOTPASSWD -e "$SQL"

3 个答案:

答案 0 :(得分:1)

您似乎启用了NO_AUTO_CREATE_USER mod,因此GRANT无法创建新用户(同样,通过GRANT创建用户可能无法在5.5和5.6中运行)。欲了解更多信息,请点击此处:

http://dev.mysql.com/doc/refman/5.1/en/server-sql-mode.html#sqlmode_no_auto_create_user

答案 1 :(得分:0)

在尝试将用户与数据库关联之前添加用户创建语句

CREATE USER your_username@localhost IDENTIFIED BY 'your_user_password';

这应解决问题

答案 2 :(得分:0)

最后试试这个:

echo“$ SQL”| mysql -u root -p