MySql 权限配置

通过修改user表授权
MySQL 权限控制信息存储在表mysql.user中.
mysql.user 表字段如下:
host:用户通过哪台主机访问;
user: 用户名称
password: 加密密码
*_priv等字段就是对应的权限.

如下记录:
(host, user, select_priv) = (192.168.1.1, zhangsan, Y) 即在客户机192.168.1.1上通过zhangsan账号访问数据库, 具有查询权限.
(host, user, select_priv) = (192.168.1.2, zhangsan, N) 即在客户机192.168.1.2上通过zhangsan账号访问数据库, 没有有查询权限.
host 的值可以是127.0.0.1, localhost 代表本机的IP, 即在mysql服务器上登录mysql. %代表除本机外的其他客户机的IP.
(host, user, select_priv) = (%, zhangsan, Y) 即在任何客户机上通过zhangsan账号登录具有查询权限.

向user表中插入数据时, password需要用PASSWORD函数加密, 如:
INSERT INTO user (Host,User,Password) VALUES ('%','root', PASSWORD('123456'));

插入完成后执行FLUSH PRIVILEGES 刷新权限.

使用grant 命令授权

语法格式为 grant 权限 on 数据库对象名.表明 to 用户;

如grant select on testdb.* to zhangsan@'%'  张三通过任何客户机登录数据库可以对testdb下的任何表执行select操作.

grant all on *.* to zhangsan@localhost; zhangsan在本机登录可以管理 MySQL 中的所有数据库

 

解决远程客户端无权限登录mysql服务器的问题

刚安装完成mysql后, 通过客户端连接mysql可能会出现这样的问题:

Access denied for user 'root'@'localhost'

这就是没有授权给客户机登录, 解决办法可以参考上面的授权.

grant all on *.* to zhangsan@localhost;

或INSERT INTO user (Host,User,Password) VALUES ('%','root', PASSWORD('123456'));

使用insert into user比较繁琐, 每个权限字段都要赋值, 建议使用grant命令.

 

如果root也没有权限远程连接而又不能直接操作服务器, 可以进入mysql的安全模式进行授权,

开启mysql安全模式步骤如下:

1. 停止mysql服务 service mysqld stop

2. 执行mysqld_safe --user=mysql --skip-grant-tables --skip-networking

3. 执行mysql命令, 看是不是进入mysql啦!

进入后按上面说的配置权限就ok啦, 配置完成后退出mysql ,然后重启mysql服务 service mysqld restart.

 

你可能感兴趣的:(mysql)