Welcome

首页 / 数据库 / MySQL / MySQL账户及权限管理概述

MySQL账户及权限管理概述2014-05-15MySQL初始账户管理

MySQL的初始账户如下:

[root@lx16 ~]# mysql -u rootmysql> 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超级账户:拥有全部的权限,可以做任何事。

匿名账户:如何人都可以通过它连接服务器,但它权限很小。

在默认情况下,这些账户都没有口令,因此为了安全起见,我们首先必须得为所有的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