数据库的安全配置-用户、口令、权限设置

数据库的安全配置

在数据库管理系统中, MySQL 具有的高性能、高可靠性、易用性及开源免费的特点,使其成为个人使用者和中小企业的首选,成为世界上最流行的开源关系型数据库管理系统。本章将以MySQL 为对象介绍如何保证数据库的安全性。

本节将以MySQL 为实例,介绍如何对数据库进行安全配置。

用户、口令、权限设置

1.设置root 用户口令

缺省安装MySQL 后,root 用户拥有所有权限,且是空口令。为了安全起见,必须为root 用户设置口令。可以采用如下方法设置root 口令:

方法1 :使用MySQL 自带的命令mysaladmin 设置root 口令

% mysqladmin -u root password 'rootpassword'

方法2: 使用set password 设置口令

%mysql> SET password for root@localhost=PASSWORD('rootpassword');

方法3: 登录数据库,修改数据岸mysql 下user 表的字段内容

%mysql> use mysql;

%mysql> UPDATE user SET password=PASSWORD('rootpassword') WHERE user='root';

%mysql> FLUSH PRIVILEGES; / /强制刷新内存授权表

2. 删除默认数据库和数据库用户

MySQL 初始化后会自动生成空用户和test 数据库,进行安装的测试,这会对数据库的安全构成威胁,有必要全部删除,只保留单个root 用户即可,以后根据需要再增如用户和数据库。

(1)删除test 数据库

%mysql> SHOW DATABASES; //显示所有数据库

%mysql> DROP DATABASE test; //删除数据库test

(2)删除非root 用户

%mysql> DELETE FROM user WHERE NOT (User='root' );

(3)删除空口令的root 用户

%mysql> DELETE FROM user WHERE User='root' and password='';

%mysql> FLUSH PRIVILEGES;

3. 改变MySQL 默认管理员名称

MySQL 默认的管理员名称是root,一般情况下都没进行修改,这在一定程度为攻击数据库提供了便利,可修改为不易被猜中的用户名。

%mysql> UPDATE user SET User='newroot' WHERE User='root'; //改成不易被猜测的用户名

%mysql> FLUSH PRIVILEGES;

4. 修改用户口令

为防止口令泄露导致的数据库非法访问,需定期修改用户口令。

%mysql> use mysql;

%mysql> UPDATE user SET password=PASSWORD('newpassword') WHERE User='usemame' and Host='host';

5. 用户授权

用户授权就是给予用户一定的访问数据库的权限,主要是用SQL 语言的GRANT 语句授权。授权操作的数据库对象包括表、视图与列等,经过授权的用户可以在指定的数据库对象上进行特定的操作。

%mysql> GRANT privi1edges ON databasename.tablename TO 'usemame'@'host';

说明privi1edges 是指用户的操作权限,如SELECT 、INSERT 、UPDATE 等操作权限,若是给用户授予全部权限,用ALL 或者ALL PRIVILEGES; databasename 是指数据库名tablename 是指表名:若要授予用户对所有数据库和表的相应操作权限,可用*表示(如*.*)。

例1: 将数据库whu 的所有权眼授权给用户John

%mysql> GRANT ALL PRIVILEDGES ON whu. * TO 'John'@'localhost';

例2: 将数据库whu 的student 表的插入权限授权给用户David

%mysql> GRANT INSERT ON whu.student TO 'David'@'%';

例3: 将数据库whu 的course 表的查询、插入、更新权限授权给用户David

%mysql> GRANT SELECT,INSERT,UPDATE ON whu.course TO 'David'@'%';

6. 用户权限查看及收回

可根据数据库安全性的需求,收回指定用户的权限。

(1)查看用户权限,使用SHOWGRANTS 语句

%mysql> SHOW GRANTS FOR 'username'@'host';

(2) 收回用户权限,使用阻VO阻语句

%mysql> REVOKE priviledges ON databasename.tablename FROM 'usemame' @'host';

—— 完 ——
相关推荐
评论

立 为 非 似

中 谁 昨 此

宵 风 夜 星

。 露 , 辰

文章点击榜

细 无 轻 自

如 边 似 在

愁 丝 梦 飞

。 雨 , 花