MySQL用户创建数据库需要什么权限?

时间:2012-03-29 22:25:27

标签: mysql

root以外的用户是否可以创建数据库?

 GRANT SELECT, CREATE ON *.* TO 'myguy'@'thatmachine' IDENTIFIED BY PASSWORD '*12057DFA2BFBD8760D4788735B1C3E26889D7ECE' |
 GRANT ALL PRIVILEGES ON `db1`.* TO 'myguy'@'thatmachine'
 GRANT ALL PRIVILEGES ON `db2`.* TO 'myguy'@'thatmachine'

我想知道这里缺少什么特权?另外,为什么第一行附加了密码?

更新

让我进一步澄清我的问题是什么。我有两个数据库机器,源和目标。源计算机上有许多客户数据库。我需要将这些源数据库移动到另一台目标机器上。

数据库采用mysqldump'ed .sql文件的形式,这些文件是从源到目标的sftp。然后,目标用户(而不是root)必须从每个.sql文件本地重新创建数据库,执行某些操作,然后删除数据库。

我找不到向目标用户提供这些权限的方法,而没有赋予他*.*的全局权限,这有效地使该用户像root一样危险。

3 个答案:

答案 0 :(得分:10)

答案 1 :(得分:2)

正如Izkata和Evan Donovan在评论中提到的,实现这一目标的最佳方法是在数据库myguy上授予myguy_%所有权限。

您可以使用以下sql执行此操作:

grant all privileges on 'myguy_%'.* to myguy@localhost identified by 'password';

通过这种方式,您无需为其他现有数据库而烦恼,myguy能够根据自己的内容创建新的数据库。

答案 2 :(得分:0)

密码字段是登录MySQL本身时该特定用户的密码。当你说你想知道缺少什么特权时,我不确定你的意思。你究竟想做什么?