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一样危险。
答案 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本身时该特定用户的密码。当你说你想知道缺少什么特权时,我不确定你的意思。你究竟想做什么?