引用官方:当你运行连接到服务器的客户端程序时,MySQL访问控制涉及两个阶段:
阶段1:服务器根据您的身份接受或拒绝连接,以及是否可以通过提供正确的密码来验证您的身份。
阶段2:假设您可以连接,服务器会检查您发出的每个语句,以确定您是否具有足够的权限来执行它。例如,如果您尝试从数据库中的表中选择行或从数据库中删除表,则服务器将验证您具有 SELECT该表的DROP特权或数据库的 权限。
我们在此简单列举一些常用的权限管理
创建一个超级用户并赋予所有权限
官方文档
mysql> grant
all privileges
on *.*
to admin1@'%'
identified by 'admin1pwd'
with grant option
命令解释:
all privileges: 所有权限,当然还可以指定具体的操作权限SELECT,INSERT,UPDATE,DELETE等。
on *.* : 前面*指定可以访问的数据库,后面的*指定表。比如指定用户可以操作test数据库下的user表就可以
on test.user
to admin1@’%’: admin1是指定用户,@后面的是指定可访问的地址,%表示所有地址,还可以指定某个ip(
192.168.1.1
)或ip地址段(192.168.1.*
)访问identified by ‘xxx’: 用于指定用户密码
with grant option: 加上这个你就可以使用grant命令创建用户或将你所拥有的权限赋予其他用户
查看权限
查看当前用户权限:show grants
查看某个用户权限:show grant for admin1
修改权限
这里没有修改权限,权限可以叠加,如果你开始给admin1赋予select权限,现在又想增加insert权限可以再次运行grant命令,这样admin1就同时拥有了select和insert权限
移除权限
跟grant语法相似,to 换成 from
grant all privileges on *.* to 'admin1'@'%'
revoke all privileges on *.* from 'admin1'@'%'
revoke删除权限,但不删除mysql.user表条目。要完全删除用户帐户,请使用drop user: drop user 'admin1'@'%'
执行完毕要 刷新权限!!!
mysql> flush privileges
最后提一句远程登陆不了还有个原因是my.ini里面有个配置项bind-address,把它注释掉,上线之后还是去掉吧