首页 / MYSQL / MySQL账户及权限管理
MySQL账户及权限管理
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了MySQL账户及权限管理,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含4254字,纯文字阅读大概需要7分钟。
内容图文
![MySQL账户及权限管理](/upload/InfoBanner/zyjiaocheng/547/15e8f612a6544d6abb38c94c3e996227.jpg)
MySQL不仅要求你必须值得谁(user_name)能连接,还必须指定从什么地方连接(host_name),也就是说即便两个账户拥有相同的名字,如果
MySQL初始账户管理
MySQL的初始账户如下:
[root@lx16 ~]# mysql -u root
mysql> select host,user,password from mysql.user;
+-----------+------+----------+
| host | user | password |
+-----------+------+----------+
| lx16 | root | |
| 127.0.0.1 | root | |
| ::1 | root | |
| localhost | | |
| lx16 | | |
| localhost | root | |
+-----------+------+----------+
MySQL有两类初始用户:
在默认情况下,这些账户都没有口令,因此为了安全起见,我们首先必须得为所有的root账户设置密码。
设置密码的第一种方法是用SET PASSWORD语句,假如我们现在要给'root'@'localhost'设置口令,只要执行:
mysql> set password for 'root'@'localhost'=password('*****');
设置密码的第二种方法是直接update user权限表,这种方法的好处是可以同时给多个账户设置密码,如下面的语句可以一次修改所有root账户的密码:
mysql> update mysql.user set password=password('***') where user='root';
mysql> flush privileges;
如果用update方式修改,必须明确告诉服务器重新加载权限表(flush privileges)
对于匿名账户,强烈建议将他们删除,删除语句如下:
mysql> drop user ''@'localhost';
mysql> drop user ''@'lx16';
执行完以上操作之后,user权限表里的数据如下:
mysql> select host,user,password from mysql.user;
+-----------+------+-------------------------------------------+
| host | user | password |
+-----------+------+-------------------------------------------+
| lx16 | root | *578EC7851088AC1F2A67B100540344B03BD2BA99 |
| 127.0.0.1 | root | *578EC7851088AC1F2A67B100540344B03BD2BA99 |
| ::1 | root | *578EC7851088AC1F2A67B100540344B03BD2BA99 |
| localhost | root | *578EC7851088AC1F2A67B100540344B03BD2BA99 |
+-----------+------+-------------------------------------------+
创建新账户
MySQL不仅要求你必须值得谁(user_name)能连接,还必须指定从什么地方连接(host_name),也就是说即便两个账户拥有相同的名字,如果他们将从不同客户端连接,你也要为它们各自创建一个账户。
可以利用以下两个通配符灵活配置主机名的限制:
test账户可以从任意IP连接
create user 'test'@'%' identified by '***';
test账户只能从本地连接
create user 'test'@'localhost' identified by '***';
test账户只能从'192.168.2.%'网段连接
create user 'test'@'192.168.2.%' identified by '***';
还可以使用IP掩码
create user 'test'@'192.168.2.2
权限管理
对账户授权需要使用Grant语句,如果账户已存在,Grant语句给它授权,如果账户不存在,Grant语句先创建它,再给它授权。
可以通过show grants语句获得自己的权限:
mysql> show grants;
+----------------------------------------------------------------------------------------------------------------------------------------+
| Grants for root@localhost |
+----------------------------------------------------------------------------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY PASSWORD '*578EC7851088AC1F2A67B100540344B03BD2BA99' WITH GRANT OPTION |
+----------------------------------------------------------------------------------------------------------------------------------------+
也可以通过show grants for 获得其它用户的权限:
mysql>show grants for ''@'localhost';
+--------------------------------------+
| Grants for @localhost |
+--------------------------------------+
| GRANT USAGE ON *.* TO ''@'localhost' |
+--------------------------------------+
上面显示的是两种特殊权限,一种是ALL(后面的PRIVILEGES关键字可省略),表示所有操作的权限(但不包括Grant权限,Grant权限由with grant option赋予);另一种是USAGE,,一种特殊的“无权限”的权限。
在某些少数情况下,我们可能需要更细致的权限控制,MySQL可以做到在列上进行授权,下面这条语句表示把全表的select权限给test,但只把(street,city)这两列的update权限给它:
grant select, update (street,city) on sampdb.member to 'test'@'localhost';
推荐阅读:
生产环境MySQL主主同步主键冲突处理
MySQL + KeepAlived + LVS 单点写入主主同步高可用架构实验
MySQL 主主同步配置
CentOS 6.3下MySQL主从复制笔记
内容总结
以上是互联网集市为您收集整理的MySQL账户及权限管理全部内容,希望文章能够帮你解决MySQL账户及权限管理所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。