【MYSQL】mysql用户与权限管理

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服务。
经验分享 程序员 微信小程序 职场和发展