通过MySQL用户去限制访问
开启远程访问: - 更新用户 use mysql; update user set host = "%" where user = "root"; flush privileges; - 添加用户 use mysql; insert into user(host, user, password) values("%", "root",password("yourpassword")) grant all privileges on *.* to 'root'@'%' with grant option #赋予任何主机访问数据库权限 flush privileges; 关闭远程访问: use mysql; update user set host = "localhost" where user = "root" andhost= "%"; flush privileges; 查看用户权限: use information_schema; select * from user_privileges; 查看当前mysql用户: use mysql; select user, host from user; 更新用户: update mysql.user set password=password('新密码') whereUser="phplamp" and Host="localhost"; flush privileges; 删除用户: DELETE FROM user WHERE User="phplamp" and Host="localhost"; flush privileges;
user host指定方法:
Host值可以是主机名或IP号,或’localhost’指出本地主机。 你可以在Host列值使用通配符字符“%”和“_”。 host值’%’匹配任何主机名,空Host值等价于’%’。它们的含义与LIKE操作符的模式匹配操作相同。例如,’%’的Host值与所有主机名匹配,而’%.mysql.com’匹配mysql.com域的所有主机。 ip地址例子: 192.0.0.0/255.0.0.0(192 A类网络的任何地址) 192.168.0.0/255.255.0.0(192.168 A类网络的任何地址) 192.168.1.0/255.255.255.0(192.168.1 C类网络的任何地址) 192.168.1.1(只有该IP)
删除用户授权,需要使用REVOKE命令,具体命令格式为: REVOKE privileges ON 数据库[.表名]FROM user-name; 具体实例,先在本机登录mysql: mysql -u root -p"youpassword" 进行授权操作: GRANT select,insert,update,delete ON TEST-DB TO test-user@"172.16.16.152" IDENTIFIEDBY "youpassword"; 再进行删除授权操作: REVOKE all on TEST-DB from test-user; ****注:该操作只是清除了用户对于TEST-DB的相关授权权限,但是这个“test-user”这个用户还是存在。 最后从用户表内清除用户: DELETE FROM user WHERE user="test-user"; 重载授权表: FLUSH PRIVILEGES;