首页 > mysql教程 > 正文

MariaDB/MySQL安全配置以及账户管理

转载 2019-02-11 0 24

原标题:MariaDB/MySQL安全配置以及账户管理

MySQL安装好后,我们要对MySQL做一些初步的安全设置,使得其适用于生产环境,此外对MySQL账户的管理设置也是有讲究的,本文从安全的角度给大家介绍MySQL/MariaDB的相关设置。

我们知道,初次安装好MySQL后,MySQL会默认自带一些用户和数据库,主要用于测试。而实际生产环境中不需要这些,为了避免带来安全隐患,我们应当移出这些测试库和无关用户。

本文假设你已经安装好了MaiaDB:《CentOS7下源码编译安装MariaDB 10.2》,安装路径及配置与该文一致。

手动删除多余的库

首先进入mysql:

/usr/ local/mariadb/bin/mysql -uroot -p

使用账号root和密码登录MySQL。

然后使用命令show databases;,你会发现有个“test”表:

MariaDB [(none)]> show databases;+--------------------+ | Database |+--------------------+ | information_schema || mysql || performance_schema || test |+--------------------+ 4rows inset ( 0. 00sec)

默认情况下,MariaDB附带一个名为“test”的数据库,任何人都可以访问,生产环境中应该删除test数据库。

DROPDATABASEtest; 手动删除多余的账户

然后查询MySQL的账户,你会发现有好几个账户:

MariaDB [mysql]> select host,user from mysql.user;+-----------------------+------+ | host |user |+-----------------------+------+|127.0. 0. 1| root || ::1 |root ||localhost | || localhost |root ||localhost.localdomain | || localhost.localdomain |root |+-----------------------+------+6 rows inset (0.01 sec)

默认情况下,MariaDB安装有一个匿名用户,允许任何人登录到MariaDB而无需创建用户帐户,生产环境中应该删除这些多余的账户。

DELETEFROM mysql.user WHERE User= ''; DELETEFROM mysql.user WHERE User= 'root'AND Host NOT IN ( 'localhost', '127.0.0.1', '::1'); FLUSHPRIVILEGES; #刷新权限

删除后,记得再刷新权限,顿时你会觉得世界清静多了。

使用工具删除多余的库和用户

如果你懒得敲那么多代码,那么你可以使用MySQL自带的一个安全设置工具:mysql_secure_installation,在MySQL的安装目录下直接执行,根据提示输入“Y”或“n”,即可完成安全配置。

允许安全设置工具:

/usr/ local/mariadb/bin/mysql_secure_installation --basedir=/usr/ local/mariadb

注意路径不要写错,成功运行后,会出现如下提示:

In order to log into MariaDB to secure it, we'll need the currentpassword for the root user. If you've just installed MariaDB, andyou haven't setthe root passwordyet, the passwordwill be blank,so you should just press enter here.Enter currentpasswordforroot (enter fornone): #修改root密码 Changethe root password? [Y/n] n#删除匿名用户Remove anonymous users? [Y/n] Y#禁止root远程登录 Disallowroot login remotely? [Y/n] Y#删除 test数据库Remove testdatabaseandaccesstoit? [Y/n] Y#重载权限表使之立即生效Reload privilege tablesnow? [Y/n] Y

完成以上步骤,你的MariaDB就基本安全了。

创建新账户和数据库权限

同样需要先进入mysql:

/usr/ local/mariadb/bin/mysql -uroot -p

创建一个新账户lesuo,并设置密码为123456x:

createuser'lesuo'@ 'localhost'identifiedby'123456x';

创建一个数据库名为lesuodb:

createdatabaselesuodb DEFAULTCHARSETutf8 COLLATEutf8_general_ci;

将数据库lesuodb分配给账号lesuo:

grantall privilegeson`lesuodb`.* to'lesuo'@ 'localhost';

刷新权限使之立即生效:

flushprivileges; 远程连接MySQL/MariaDB

复杂些的应用就需要数据库提供对外远程访问,比如开放内网段、特定IP、公网访问等。

允许用户lesuo凭密码123456从任意机器访问数据库lesuodb,用户lesuo拥有操作数据库lesuodb的所有权限。

grantall privilegeson`lesuodb`.* to'lesuo'@ '%'identifiedby'123456';

允许用户lesuo凭密码123456从网段192.168.11.*的机器上访问数据库lesuodb,用户lesuo拥有操作数据库lesuodb的select,insert,update,create权限。

grantselect, insert, update, createonlesuodb.* tolesuo@ '192.168.11.%'identifiedby'123456';

刷新权限使之立即生效:

flushprivileges;

开放远程连接的服务器记得设置防火墙开放MySQL端口(默认3306)。

以上就是MySQL的账户相关安全设置的全部内容,接下来会有文章介绍常用的mysql操作,如导入和导出,同步和备份等,敬请关注。

相关文章


  • MySQL 8.0 新特性之统计直方图
  • MySQL句柄恢复文件的简单尝试
  • MySQL 8.0.3性能大杀器 —— CATS
  • mysql/mariadb - 加载的配置文件是哪个?
  • 导图MySQL速查(安装管理篇)
  • mysql事务触发器函数过程:自定义函数
  • mysql中insert into select from的使用
  • 全栈数据之MySQL常用命令总结