mysql的用户权限,是在mysql.user表中控制的。
我们登录mysql的命令的一般格式是:mysql -uroot -p123456 -h192.168.1.180
查看mysql.user的表结构,如图:
可见,其中的Host,User,Password就是我们登录时候需要输入的参数,列名为*_priv的列对应的是增、删、改、建表、删表、、、等权限。
这是我的 mysql 权限配置信息,其中,host支持 IP/子网掩码的计算规则以及正则匹配,当然,password是密文。
mysql的用户权限配置有两种方法,
1、直接往user表插数据(flush privileges;(执行该语句或重启MySQL后生效)),
eg:insert into mysql.user(Host,User,Password) values("localhost","test",password("1234"));
2、使用grant命令(flush privileges;(执行该语句或重启MySQL后生效)),
格式:grant 权限 on 数据库.* to 用户名@登录主机 identified by "密码";
eg:grant all privileges on *.* to test_1@localhost identified by "123456";
grant命令,如果不是root用户,应该会有以下报错:
报错提示:执行该命令的权限不足。。。去user表中查看:
把Grant_priv修改为‘Y’即可(flush privileges;(执行该语句或重启MySQL后生效)),update mysql.user set Grant_priv='Y' where user='ptmind';
附:
登录mysql命令的一般格式为:mysql -uroot -p123456 -h192.168.1.180
但有的mysql使用 ‘mysql -uroot -p123456’ 或者 ‘mysql’ 就可登录,要怎么配置呢?
未完待续、、、、