Home  >  Article  >  Database  >  数据库安全管理_MySQL

数据库安全管理_MySQL

WBOY
WBOYOriginal
2016-06-01 13:57:29991browse

     为了确保数据库平稳可靠运行,我们需进行维护和管理,这是每一位数据库管理员的职责。下面分几个专题分别介绍。

数据库安全管理
MySQL数据库通过用户和密码来控制用户对数据库的访问,当我们新安装了一个数据库服务器时,MySQL的权限表设置是很不安全,它默认允许任何人不需要密码就可访问数据库。所以我们安装好服务器后第一件需要做的就是设置用户密码。

在MySQL中的mysql数据库的user数据表中存有用户的帐号信息,在初始状态下已存在root和一些匿名用户,且所有用户都没有设置密码。该数据表的这些用户信息是通过一个mysql_install_db脚本安装的。该表的主要列有:

User,连接数据库的用户名。

Host,允许连接到数据库服务器的主机名,“%”通配符代表所有主机。

Password,连接密码,已加密。

其它权限列,以“Y”或“N”标识是否有效。

在这种状态下的数据库是极不安全的,我们可用以下命令轻易地访问数据库:

% mysql -h localhost -u root     #通过本地主机,root用户访问,不需要密码验证
% mysql -h localhost             #通过本地主机,匿名用户访问,不需要密码验证
设置MySQL用户帐号密码的方法有三种:

使用mysqladmin程序:

% mysqladmin -h localhost -u root password "password"   #设置在本地以root身分登录的密码
% mysqladmin -h remote -u root password "password"      #设置远程主机以root身分登录的密码
在初始设置时,这两条语句都要运行,以确保数据库本地访问和网络访问的安全。

通过set password这条SQL语句设置:

mysql> set password for 'root'@'localhost' = password('password');
mysql> set password for 'root'@'remote' = password('password');
直接修改user权限表:

mysql> use mysql;
mysql> update user set password=password('password') where user='root';
mysql> flush privileges;                            #重载权限表,使修改马上生效
MySQL使用驻留在内存中的权限表拷贝来进行访问控制,当使用mysqladmin和set password设置密码,MySQL会监察到权限表已被修改,它自动重载该表。而用update的方式,MySQL就监察不到变化,需手动用flush privileges命令刷新内存中的权限表,以使它马上生效。

为root用户设置密码后,如果需以root身份连接数据库,就需验证密码。我们可用以下语句连接数据库:

% mysql -u root -p
Enter password:                         #输入root的密码
在user表中,user列为空的为匿名用户。它也是没有密码的,我们需为它们设置一个密码,或干脆把它们删除。在windows系统上的本地匿名用户帐号和root用户有着同样的权限,这是一个很大的安全漏洞。应该把它删除或把权限削弱。

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn