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; # 冲刷权限
用户常用权限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.%';
有时候忘记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服务。