MySQL笔记-mysql用户管理

来源:互联网 发布:手机身份证ocr识别软件 编辑:程序博客网 时间:2024/04/30 23:46

用户创建(create user)、修改(alter user)、分配权限(grant)、删除(drop user)都属于数据库管理语句中的用户管理语句(Database Administration Statements——>Account Management Statements)。现记录下简单使用方法:

一、用户创建


说明:

创建用户时,mysql服务将自动分配一个认证插件(默认为mysql_native_password,可在mysql.user表中查看)。可使用IDENTIFIED WITH指定插件(后面可选的AS子句指定密码)。也可用IDENTIFIED BY 指定密码(此时插件即为默认的)。user格式为"userName"@"hostName",通配符'_'与'%'可用于hostName中,hostName的几点说明:

1、localhost:表示本地主机;

2、127.0.0.1:IPv4的轮询接口;

3、::1:IPv6的轮询接口;

4、192.168.1.%:匹配一个子网的中所有主机。为保证访问的安全性,所以mysql中此处%将不能匹配数字加点形式的主机名,如192.168.1.2.somewhere.com将不会被匹配。

5、对IPv4,可以使用子网掩码,使该用于可通过子网中所有主机访问。语法:host_ip/netmask,如:192.58.197.0/255.255.255.0。只有客户端ip(client_ip)满足client_ip&netmask=host_ip的客户端主机可访问。和第4条相似,但更加灵活,因为此处是三级网络结构。

6、建议DNS服务器返回的主机名格式与account中设置的相同,以避免DNS返回格式导致的无法访问错误。

CURRENT_USER或CURRENT_USER函数能快速返回当前的account。如:select CURRENT_USER;

简单示例:


注:

1、创建用户也可直接通过root根用户操作mysql.user,添加用户记录,并分配权限。

2、新建用户后必须重启mysql服务,新用户才能登陆,否则提示1045错误:Access denied for...导致该错误的另一原因也可能是用户没有访问权限,即当前主机的hostName不在所访问的数据库服务器的用户信息('userName'@'hostName')中的hostName中。



二、分配权限

以root用户登录mysql,查询mysql数据库中的user表,会发现,刚创建的用户所有权限的值都是默认的"N",所以需要分配权限,才能执行SELECT等操作。语法:


简单实践:为新建的user_test用户分配一个查询与插入test.test_procedure表的权限。


之后一定要重启mysql服务,否则以新建用户登录时会提示1045:Access denied...访问取消错误。

以user_test登录并查询具有权限的表:


说明:

1、当试图查询mysql.user表时提示1142:查询命令取消错误,因为没权限。

2、再次以root登录mysql,在mysql数据库的user表中查看为test_user分配的权限,发现select与insert权限值还是为N,也许是因为只是在某个表上分配了权限的原因。

3、未演示对分配userA对某些user(如:userB、userC...)的管理权限。分配后应该可以实现分层管理。

问题:

对只分配了某个表的select与insert权限的用户,也能对该表进行增删改查等操作,且也能建新表,难道这些权限是默认的?那为什么mysql.user表中显示的全是N?个人的理解是,其实创建的user也是数据库管理员,只是级别比root低,只有将所有数据库所有表的所有权限配给user时,在mysql.user中该user的权限才显示为Y,进行了简单实践也却是如此。



三、修改用户

5.6.7版本只有一条(ALTER USER),且前面的版本没有此项。必须要求有创建用户权限方可操作,换句话说,执行此命令的用户要能管理其他用户。

5.6.24文档说明:


翻译:

该条语句表现为在mysql.user表中的password_expired列值被设为Y。在严格模型中,如果一个用户的密码expire(失效,期满),则在会话期间的操作将导致错误(1820),直到该用户重设密码。

疑问:

管理员应该什么时候用该语句,告诉用户该改密码呢?



四、删除用户

语法:

DROP user 'userName'@'hostName';


五、用户代理

具有用户代理权限的用户,可在被代理用户允许登录的主机上登录被代理用户可访问的数据库。分配用户代理权限,见上面分配权限图。

未实践


注:MySQL中schema与database几乎相同,但shemale是默认对所有用户都有权限的,无需分配权限。如任意用户A新建一个schema,则只能访问数据库databaseB的用户B执行show databases也能看见A建的schema!

0 0
原创粉丝点击