正文
mysql开启远程访问及相关权限控制
小程序:扫一扫查出行
【扫一扫了解最新限行尾号】
复制小程序
【扫一扫了解最新限行尾号】
复制小程序
开启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“。
l
只能访问数据库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
l 二、撤销已经赋予给 MySQL 用户权限的权限。
revoke 跟 grant 的语法差不多,只需要把关键字 “to” 换成 “from” 即可:
grant all on *.* to dba
@localhost;
revoke all on *.* from dba
@localhost;
grant, revoke 用户权限后,该用户只有重新连接 MySQL 数据库,权限才能生效。
l 三、对数据库开启只读权限,用于数据库热备份
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;