2015-04-15 55 views
0

我正在尝试在MySql数据库上创建一个新用户,并授予他们仅查看权限,以便他们可以查看并且实际上无法更改任何内容。我试过下面的代码:如何创建用户和授予权限MySql

string query = "INSERT INTO users(user_name, password, admin) VALUES('" + usernameTextBox.Text + "','" + passwordTextBox.Text + "', '1')"; 
MySqlCommand command = new MySqlCommand(query, databaseConnection); 
command.ExecuteNonQuery(); 


query = "CREATE USER '" + usernameTextBox.Text + "' IDENTIFIED BY '" + passwordTextBox.Text + "'"; 
command = new MySqlCommand(query, databaseConnection); 
command.ExecuteNonQuery(); 

query = "GRANT SELECT, SHOW DATABASES ON database.* TO '" + usernameTextBox.Text + "'@'%'"; 
command = new MySqlCommand(query, databaseConnection); 
command.ExecuteNonQuery(); 

我得到以下错误:

Incorrect usage of DB GRANT and GLOBAL PRIVILEGES

我一直想读的MySQL文档和堆栈溢出这里阅读其他问题,但是我似乎不能算出这个

回答

0

创建用户,文件,进程,RELOAD,REPLICATION CLIENT,REPLICATION SLAVE,SHOW DATABASES,关机和SUPER权限是管理,只能在全球范围内授予。 它不能应用于单个数据库 你需要拆分批查询

GRANT SHOW DATABASES ON *.* TO 'username'@'%'; -- GRANT TO ALL DATABASES 
GRANT SELECT ON database.* TO 'username'@'%'; 

附:和你的代码是不是SQL注入安全,你必须使用prepared statements

0

授予许可,不得以MySQL的或MariaDB的

GRANT ALL PRIVILEGES ON DatabaseName.* TO 'username'@'%' WITH GRANT OPTION;