多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
###一、开启mysql远程访问 授予用户user 密码 passwd 所有权限 所有主机IP可访问 * 授权语句:Grant <权限> on 表名[(列名)] to 用户 With grant option或 GRANT <权限> ON <数据对象> FROM <数据库用户> ``` GRANT ALL PRIVILEGES ON *.* TO 'user'@'%' IDENTIFIED BY 'passwd' WITH GRANT OPTION; ``` * ALL PRIVILEGES表示所有权限,*.*表示所有数据库和表,`%`表示所有IP,WITH GRANT OPTION授予授权权限,如果想让授权的用户,也可以将这些权限 grant 给其他用户,需要选项 “grant option“。 只能访问数据库gogs的所有权 ``` GRANT ALL PRIVILEGES ON gogs.* TO 'user2'@'%' IDENTIFIED BY 'passwd2' WITH GRANT OPTION; ``` 分别授予用户所有主机IP可访问,分别拥有增删改查权限 ``` GRANT select ON *.* TO 'user1'@'%' IDENTIFIED BY 'passwd1' WITH GRANT OPTION; GRANT insert ON *.* TO 'user2'@'%' IDENTIFIED BY 'passwd2' WITH GRANT OPTION; GRANT updata ON *.* TO 'user3'@'%' IDENTIFIED BY 'passwd3' WITH GRANT OPTION; GRANT delete ON *.* TO 'user4'@'%' IDENTIFIED BY 'passwd4' WITH GRANT OPTION; ``` 查询用户具有的权限,因为只给了查询权限,所以只有Select_priv: Y。 ``` mysql> GRANT select ON *.* TO 'user'@'%' IDENTIFIED BY 'passwd' WITH GRANT OPTION; Query OK, 0 rows affected, 1 warning (0.02 sec) mysql> select * from mysql.user where user='user'\G; *************************** 1. row *************************** Host: % User: user Select_priv: Y Insert_priv: N Update_priv: N Delete_priv: N Create_priv: N Drop_priv: N 1 row in set (0.00 sec) ERROR: No query specified ``` #### 二、撤销已经赋予给 MySQL 用户权限的权限。 revoke 跟 grant 的语法差不多,只需要把关键字 “to” 换成 “from” 即可: ``` grant all on *.* to dba@localhost; revoke all on *.* from dba@localhost; ``` grant, revoke 用户权限后,该用户只有重新连接 MySQL 数据库,权限才能生效。 ###三、对数据库开启只读权限,用于数据库热备份 1、 对于MySQL单实例数据库和master库,如果需要设置为只读状态,需要进行如下操作和设置: 将MySQL设置为只读状态的命令: ``` mysql> show global variables like "%read_only%"; mysql> flush tables with read lock; mysql> set global read_only=1; mysql> show global variables like "%read_only%"; ``` 将MySQL从只读状态设置为读写状态的命令: ``` mysql> unlock tables; mysql> set global read_only=0; ``` 2)、对于需要保证master-slave主从同步的salve库 将slave从库设置为只读状态,需要执行的命令为: ``` mysql> set global read_only=1; ``` 将salve库从只读状态变为读写状态,需要执行的命令是: ``` mysql> set global read_only=0; ```