Skip to content

Latest commit

 

History

History
90 lines (65 loc) · 2.71 KB

08.mysql用户与权限管理.md

File metadata and controls

90 lines (65 loc) · 2.71 KB

1. 用户连接mysql服务器

mysql认证用户依据有3个参数:

  • 你从哪里来:host
  • 你是谁:user
  • 你的密码是多少:password
# 连接数据库
mysql -h192.168.8.102 -uroot -p123456;

# 查看当前登录用户
SELECT user();

# 通过库名mysql里的user表来查看有哪些用户可以登录
USE mysql;
DESC user;
SELECT host,user,password FROM user;

# 修改host域,指定IP能连接起来
UPDATE user SET host='192.168.8.101' WHERE host='::1';
FLUSH PRIVILEGES; # 冲刷权限

# 修改用户密码
UPDATE user SET password=password('123456') WHERE host='192.168.8.101';
FLUSH PRIVILEGES; # 冲刷权限

2. 创建、授权和回收用户

用户常用权限all,creat,drop,insert,update,delete,select ……

# 创建一个新用户,注:如果是8.0版本以上,默认使用caching_sha2_password,有些客户端可能不支持
CREATE USER 'krislin'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
# 为新用户授权库.表
GRANT ALL ON *.* TO 'krislin'@'%';
FLUSH PRIVILEGES; # 冲刷权限

# 新建一个用户并授权
GRANT [权限1, 权限2......] ON 数据库名.该库下的表名 TO 用户名@主机名 IDENTIFIED BY 密码;

# 示例:
    # 授权给主机为192.168.8.n局域网内的用户root所有数据库权限
    GRANT ALL ON *.* TO root@'192.168.8.%' IDENTIFIED BY '123456';
    FLUSH PRIVILEGES; # 冲刷权限

    # 针对某个库做授权
    GRANT ALL ON test.* TO root@'192.168.8.%';
    FLUSH PRIVILEGES; # 冲刷权限

    # 针对某个表授权
    GRANT select,update,insert ON test.goods TO root@'192.168.8.%';
    FLUSH PRIVILEGES; # 冲刷权限


# 收回用户权限
REVOKE [权限1, 权限2 ......] ON 数据库名.该库下的表名 FROM 用户名@主机名;

# 示例:
    # 收回某用户的所有权限
    REVOKE ALL ON *.* FROM root@'192.168.8.%';

3. 跳过mysql认证登录方法

有时候忘记mysql帐号密码或修改了主机ip使得无法登录mysql, 解决办法:

# (1) 关闭mysql服务
/etc/init.d/mysql stop

# (2) 启动mysql服务时添加跳过权限检测
/usr/local/mysql/bin/mysqld --skip-grant-tables

# (3) 在新的终端登录mysql修改数据库mysql下user表的host、user、name列
/usr/local/mysql/bin/mysql
  > use mysql;
  > select host,user,password from user;
  > update user set host='ip地址',user='用户名' password=password('你的密码') where 定位那一行;

# 最后重启mysql服务。