我想在MySql中创建一个新用户。我不希望新用户对我现有的数据库做很多事情[我只想给他授予Select权限],但是他可以用他创建的新数据库做任何事情。
首先,有没有办法根据数据库所有者授予权限?如果有可能,那么这是我正在寻找的理想选择。如果没有,那么我如何限制特定用户仅访问某些特定数据库[仅选择权限],允许他对剩余的用户做任何他想做的事情?
答案 0 :(得分:16)
来自MySQL grant documentation:
CREATE USER 'jeffrey'@'localhost' IDENTIFIED BY 'mypass';
GRANT SELECT ON *.* TO 'jeffrey'@'localhost';
GRANT ALL ON db1.* TO 'jeffrey'@'localhost';
第一个命令创建用户。第二个授权选择所有数据库和表。第三个命令授予对db1中所有表的所有访问权限。
您还有其他具体想做的事吗?
答案 1 :(得分:3)
要向特定用户提供权限,您可以使用此框架:
GRANT [type of permission] ON [database name].[table name] TO ‘[username]’@'localhost’;
GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';
此命令中的星号指的是可以访问的数据库和表(分别) - 此特定命令允许用户读取,编辑,执行和执行所有数据库和表中的所有任务。
完成为新用户设置的权限后,请务必重新加载所有权限。
FLUSH PRIVILEGES;
有关权限的更多信息,请阅读本文 https://www.digitalocean.com/community/articles/how-to-create-a-new-user-and-grant-permissions-in-mysql
有关权限列表,请参阅MySQL手册页面Privileges Provided by MySQL。
答案 2 :(得分:1)
打开mysql命令提示符。
要在主机为localhost时创建新用户,请使用此命令
CREATE user 'test_user'@'localhost' identified by 'some_password';
任何主机使用%,像这样
CREATE user 'test_user'@'%' identified by 'some_password';
创建用户后,您需要授予一些访问权限。使用以下命令。
GRANT SELECT,INSERT,UPDATE
ON database_name.table_name
TO 'test_user'@'localhost';
成功执行上述查询后,test_user可以在database_name(数据库名称)的table_name(表名)中选择,插入和更新。
答案 3 :(得分:-2)
grant privilege
在此类数据库中提供
grant privilege on object to user
object
是任何数据库表或关系,user
可能是向他提供权限的人。
实施例
grant select,insert,update,on object name to user name
grant select on employee to john with grant option;
revoke delete on employee from john.