mysql grant授权

MySQL 赋予用户权限命令的简单格式可概括为:

grant 权限 on 数据库对象 to 用户

一、grant 普通数据用户,查询、插入、更新、删除 数据库中所有表数据的权利。

grant select on testdb.* to [email protected]‘%‘
grant insert on testdb.* to [email protected]‘%‘
grant update on testdb.* to [email protected]‘%‘
grant delete on testdb.* to [email protected]‘%‘

或者,用一条 MySQL 命令来替代:

grant select, insert, update, delete on testdb.* to [email protected]‘%‘

二、grant 数据库开发人员,创建表、索引、视图、存储过程、函数。。。等权限。

grant 创建、修改、删除 MySQL 数据表结构权限。

grant create on testdb.* to [email protected]‘192.168.0.%‘;
grant alter on testdb.* to [email protected]‘192.168.0.%‘;
grant drop on testdb.* to [email protected]‘192.168.0.%‘;

grant 操作 MySQL 外键权限。

grant references on testdb.* to [email protected]‘192.168.0.%‘;

grant 操作 MySQL 临时表权限。

grant create temporary tables on testdb.* to [email protected]‘192.168.0.%‘;

grant 操作 MySQL 索引权限。

grant index on testdb.* to [email protected]‘192.168.0.%‘;

grant 操作 MySQL 视图、查看视图源代码 权限。

grant create view on testdb.* to [email protected]‘192.168.0.%‘;
grant show view on testdb.* to [email protected]‘192.168.0.%‘;

grant 操作 MySQL 存储过程、函数 权限。

grant create routine on testdb.* to [email protected]‘192.168.0.%‘; -- now, can show procedure status
grant alter routine on testdb.* to [email protected]‘192.168.0.%‘; -- now, you can drop a procedure
grant execute on testdb.* to [email protected]‘192.168.0.%‘;

三、grant 普通 DBA 管理某个 MySQL 数据库的权限。

grant all privileges on testdb to [email protected]‘localhost‘

其中,关键字 “privileges” 可以省略。

四、grant 高级 DBA 管理 MySQL 中所有数据库的权限。

grant all on *.* to [email protected]‘localhost‘

五、MySQL grant 权限,分别可以作用在多个层次上。

1. grant 作用在整个 MySQL 服务器上:

grant select on *.* to [email protected]; -- dba 可以查询 MySQL 中所有数据库中的表。
grant all on *.* to [email protected]; -- dba 可以管理 MySQL 中的所有数据库

2. grant 作用在单个数据库上:

grant select on testdb.* to [email protected]; -- dba 可以查询 testdb 中的表。

3. grant 作用在单个数据表上:

grant select, insert, update, delete on testdb.orders to [email protected];

这里在给一个用户授权多张表时,可以多次执行以上语句。例如:

grant select(user_id,username) on smp.users to [email protected]‘%‘ identified by ‘123345‘;
grant select on smp.mo_sms to [email protected]‘%‘ identified by ‘123345‘;

4. grant 作用在表中的列上:

grant select(id, se, rank) on testdb.apache_log to [email protected];

5. grant 作用在存储过程、函数上:

grant execute on procedure testdb.pr_add to ‘dba‘@‘localhost‘
grant execute on function testdb.fn_add to ‘dba‘@‘localhost‘

六、查看 MySQL 用户权限

查看当前用户(自己)权限:

show grants;

查看其他 MySQL 用户权限:

show grants for [email protected];

七、撤销已经赋予给 MySQL 用户权限的权限。

revoke 跟 grant 的语法差不多,只需要把关键字 “to” 换成 “from” 即可:

grant all on *.* to [email protected];
revoke all on *.* from [email protected];

八、MySQL grant、revoke 用户权限注意事项

1. grant, revoke 用户权限后,该用户只有重新连接 MySQL 数据库,权限才能生效。

2. 如果想让授权的用户,也可以将这些权限 grant 给其他用户,需要选项 “grant option“

grant select on testdb.* to [email protected] with grant option;

这个特性一般用不到。实际中,数据库权限最好由 DBA 来统一管理。

*************************************************************************************************

遇到 SELECT command denied to user ‘用户名‘@‘主机名‘ for table ‘表名‘ 这种错误,解决方法是需要把吧后面的表名授权,即是要你授权核心数据库也要。

我遇到的是SELECT command denied to user ‘my‘@‘%‘ for table ‘proc‘,是调用存储过程的时候出现,原以为只要把指定的数据库授权就行了,什么存储过程、函数等都不用再管了,谁知道也要把数据库mysql的proc表授权

*************************************************************************************************

mysql授权表共有5个表:user、db、host、tables_priv和columns_priv。

授权表的内容有如下用途:
user表
user表列出可以连接服务器的用户及其口令,并且它指定他们有哪种全局(超级用户)权限。在user表启用的任何权限均是全局权限,并适用于所有数据库。例如,如果你启用了DELETE权限,在这里列出的用户可以从任何表中删除记录,所以在你这样做之前要认真考虑。

db表
db表列出数据库,而用户有权限访问它们。在这里指定的权限适用于一个数据库中的所有表。

host表
host表与db表结合使用在一个较好层次上控制特定主机对数据库的访问权限,这可能比单独使用db好些。这个表不受GRANT和REVOKE语句的影响,所以,你可能发觉你根本不是用它。

tables_priv表
tables_priv表指定表级权限,在这里指定的一个权限适用于一个表的所有列。

columns_priv表
columns_priv表指定列级权限。这里指定的权限适用于一个表的特定列。

时间: 2024-10-24 06:11:31

mysql grant授权的相关文章

mysql grant 授权

mysql grant 授权 授权格式如:grant 权限 to 数据库对象 on 用户 grant 授权用户增删改查权限: grant select, insert, update, delete on testdb.* to sky_user@'%' grant 数据库开发人员,创建表.索引.视图.存储过程.函数等权限.grant create on testdb.* to developer@'192.168.0.%';grant alter on testdb.* to develope

MySQL中授权(grant)和撤销授权(revoke)命令之用法

MySQL的权限系统围绕着两个概念: 认证->确定用户是否允许连接数据库服务器 授权->确定用户是否拥有足够的权限执行查询请求等. 如果认证不成功的话,哪么授权肯定是无法进行的. revoke 跟 grant 的语法差不多,只需要把关键字 "to" 换成 "from" 表 GRANT和REVOKE管理的权限 权限 描述 ALL PRIVILEGES 影响除WITH GRANT OPTION之外的所有权限 ALTER 影响ALTER TABLE命令的使用

MySQL grant用户授权 和 MYSQL bin-log日志 实操讲解

这一次我来简单地实际操作讲解下grant用户授权和bin-log日志,博文中配了很多操作过程中的图作为步骤流程讲解,大家跟着过程自己在电脑操作一遍,基本上就懂这方面的相关知识了.不多说,直接进入知识讲解. 远程主机连接用户授权 例:192.168.1.111mysql服务器 和192.168.1.112mysql服务器 一.MySQL grant用户授权  192.168.1.111登陆mysql ,给用户授权 查询下是否添加此用户 这样就成功给IP为192.168.1.112的主机授权mysq

MySQL中授权(grant)和撤销授权(revoke)

MySQL 赋予用户权限命令的简单格式可概括为: [sql] view plaincopyprint? grant 权限 on 数据库对象 to 用户 一.grant 普通数据用户,查询.插入.更新.删除 数据库中所有表数据的权利 [sql] view plaincopyprint? grant select on testdb.* to [email protected]'%' grant insert on testdb.* to [email protected]'%' grant upd

mysql中授权(grant)和撤销授权(revoke)命令用法

MySQL的权限系统围绕着两个概念: 认证->确定用户是否允许连接数据库服务器 授权->确定用户是否拥有足够的权限执行查询请求等. 如果认证不成功的话,哪么授权肯定是无法进行的. revoke 跟 grant 的语法差不多,只需要把关键字 “to” 换成 “from” 表 GRANT和REVOKE管理的权限 权限 描述 ALL PRIVILEGES 影响除WITH GRANT OPTION之外的所有权限 ALTER 影响ALTER TABLE命令的使用 ALTER ROUTINE 影响创建存储

mysql grant配置授权

新建一个用户admin1对所有的库表完全权限,允许从任何地方访问,密码设为123456Query OK, 0 rows affected, 1 warning (0.00 sec)语法为 grant 权限l列表 on 库名.表名 用户名@"用户地址" identified by " 密码" [ with grant opion ]; mysql> grant all on . to [email protected]"%" identifi

mysql grant命令详解

grant 权限 on 对象 to 用户 一.grant 普通数据用户,查询.插入.更新.删除 数据库中所有表数据的权利. grant select on testdb.* to grant insert on testdb.* to grant update on testdb.* to grant delete on testdb.* to 或者,用一条 MySQL 命令来替代: grant select, insert, update, delete on testdb.* to 二.gr

MySQL账号授权操作

Mysql权限控制 - 允许用户远程连接 Mysql为了安全性,在默认情况下用户只允许在本地登录,可是在有此情况下,还是需要使用用户进行远程连接,因此为了使其可以远程需要进行如下操作: 一.允许root用户在任何地方进行远程登录,并具有所有库任何操作权限, 具体操作如下: 在本机先使用root用户登录mysql: mysql -u root -p"youpassword" 进行授权操作: mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%

Mysql grant权限管理

MySQL 赋予用户权限命令的简单格式可概括为: grant 权限 on 数据库对象 to 用户 [identified by '密码'] 最常用的,弄主从同步的时候,给从库的slave用户设置拥有所有权限,权限all 仅允许其从192.168.0.2登录,并限定使用密码 funsion (密码要用 单/双引号 括起来) grant all on *.* to slave@192.168.0.2 identified by 'funsion'; 执行完毕后,记得用 FLUSH PRIVILEGE