KyleBlog.cn 文章 标签 关于
文章 标签 关于

安全地初始化MySQL服务(Ubuntu版为例)

mysql安装教程很多,但是有不少讲得过于简单,没有考虑到安全问题。比如说,一些教程里,只设置一个root用户,并且对外网公开,一来容易被破解密码(用户名固定,破解难度自然降了一大截,而且总有很多用户设置的密码不算复杂),二来,一旦密码被破解,所有使用该数据库的网站都遭殃。

一种更好的方法是,安装完mysql之后,立马创建小号,给小号只分配特定db上的权限,以后尽可能只使用小号。

安装mysql

一条语句就够了,在伪GUI里按照提示设置root密码。下面以ubuntu为例:

sudo apt-get install mysql-server

修改mysql配置文件,使得mysql监听来自外网的请求

注,只是监听请求,不代表现在任何账号都可以从外网登录。

sudo vim /etc/mysql/my.cnf
# 注释掉这行:bind-address = 127.0.0.1
# 要是my.cnf里没找到bind-address的话,试试/etc/mysql/mysql.conf.d/mysqld.cnf

用root账号登录mysql

输入密码,登录成功后,进入mysql控制台,在mysql控制台下,命令都以“mysql>”开头,接下来的步骤都是在mysql控制台中进行的。

mysql -u root -p

创建小号

下面的例子里,用户名user1,密码user1pwd。注意,'user1'@'%'里的%表示:任意ip地址的客户端都可以使用user1登录。

mysql> create user 'user1'@'%' identified by 'user1pwd'

给小号分配权限

注意,web1_db.*表示小号拥有web1_db数据库的全部权限。

mysql> CREATE DATABASE web1_db DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;  # 创建小号专用的数据库
mysql> grant all privileges on web1_db.* to 'user1'@'%';
mysql> flush privileges;  # 使操作立即生效

重启mysql

sduo systemctl restart mysql

本文为kyleblog.cn原创,转载请注明出处:https://www.kyleblog.cn/posts/mysql_safe

发布日期:2022-06-21 联系作者