前言
与其他的大型数据库例如 Oracle、DB2、SQL Server 等相比,MySQL 自有它的不足之处,但是这丝毫也没有减少它受欢迎的程度。对于一般的个人使用者和中小型企业来说,MySQL提供的功能已经绰绰有余,而且由于 MySQL是开放源码软件,因此可以大大降低总体拥有成本....
本次文章介绍了在ubuntu系统下如何安装mysql数据库 以及安装之后你应当如何配置root密码认证和其他基本安全配置,还介绍了增加普通账号 并赋予相应的最小权限,及如何远程访问数据库...
每一次命令都有相应的截图 十分的详细 非常适合新手朋友们学习。
安装mysql
直接运行命令 安装mysql
sudo apt-get update
sudo apt install mysql-server
命令成功执行后 mysql服务应该是成功启动 监听在本地127.0.0.1的端口3306
意思是只能本地连接mysql 不对外开放
当然如果你有这个需求 可以监听在网卡上 只需修改配置文件就行。这个稍后会说 ,让我们先配置下基本的安全策略
mysql基本安全配置
初次安装mysql 建议运行下面的命令 快捷地对数据库做基本的安全配置,像root 密码了,密码复杂度了...
sudo mysql_secure_installation
1.增加密码组件
询问我们是否要设置验证密码组件?y
2.设置root密码
可以看到数据库为我们提供了三种密码策略 中级策略 长度大于等于8位 需是数字 字母大小写 特殊字符的组合
选择一种密码策略 enter 0
这里出了点错误,密码一直不能通过 即使我没有选择y 也不是密码不符合要求
提示我们要使用alter user 的方式来设置密码 好吧 我们先进入数据库把密码设置一下 之后继续配置
sudo mysql
mysql> alter user 'root'@'localhost' identified with mysql_native_password by by '123.Shelter';
需要注意的是默认的密码策略是中级 必须是数字大小写字母 特殊符号的8位以上组合
成功后 exit 退出
继续 sudo mysql_secure_installation 进行配置
已经设置过密码不需要改变密码了 Press n
3.禁用匿名用户
要移除匿名用户吗? 我们肯定不希望系统的数据库随便被他人查看 所以最好移除掉匿名用户
假如我是学校教数据库的老师 ,我希望每个学生都能够连接上这个数据 练习sql语句 ,那匿名访问再合适不过了。
4.root 远程登录
正常地 root用户只允许本地 你是否禁用掉root的远程登录 ?n
root是数据库的最高权限用户 ,如果可以远程登录存在暴力破解的可能,如果需要远程登录 我们最好设置一个普通权限的用户,这点稍后会说
5.移除test数据库
默认情况下下 数据库为开发者们提供了一个名为test数据库 供学习与测试
如果你不需要 最好将它移除掉
6.刷新权限表
与配置文件不同 我们在数据库所做的所有配置 都存在了sql数据库中权限表里
询问我们要reload吗 y
这里就全部配置好了
登录数据查看基本配置
要进入数据库 这时候就需要使用密码登录了
mysql -u root -p
查看当前数据库下存在的用户
mysql> select user,authentication_string,plugin,host from mysql.user;
(这里仍然可以使用之前的命令alter user 'root'@'localhost' identified with mysql_native_password by by '123.Shelter';修改密码)
可以看到root是本地用户 密码是hash后的值
查看当前密码安全策略
mysql> select @@validate_password_policy;
查看具体的设置项
mysql> SHOW VARIABLES LIKE 'validate_password%';
这里可以再次设置策略 如
mysql> set global validate_password_policy=0;
增加数据库普通账号及分配相应权限
假设我们现在想增加一个pikaqiu的账号 为了安全考虑 这个账号只允许访问pikaqiu数据库
1.先建立一个数据库
mysql> create database pikaqiu;
2.增加账号
mysql>create user 'pikaqiu'@'localhost' identified by 'Pikaqiu.123'
3.应用权限
mysql>grant all privileges on pikaqiu.* to 'pikaqiu'@'localhost' with grant option;
pikaqiu这个账号只拥有 pikaqiu库的权限
4.刷新权限
mysql>flush privileges;
接下来测试一下 登录pikaqiu账号看看它是否能访问其他数据库
可以看到相较于root用户下的库 这已经少了很多
配置数据库远程登录
假设我们有需求 在外面web服务器要使用远程访问这台数据库 那么要什么设置呢。
1.增加一个远程账号
mysql>create user 'ssh'@'%' identified by 'Ssh.1234'
2.添加一个数据库
这里为了测试我添加了一个名为ssh的数据库
mysql> create database ssh;
3.限制远程访问权限
我只想让ssh这个用户 只访问ssh这个数据库 因此
mysql>grant all privileges on ssh.* to 'ssh'@'%' with grant option;
(这个命令需要sudo 权限下mysql)
4.修改配置文件 监听网卡端口
这里还没有结束 因为此时还在监听本地回环地址呢 先flush privileges; 一下 之后退出mysql
sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf
bind-address = 192.168.20.4
5.重启服务
sudo systemctl restart mysql.service
可以使用 ss -anplt | grep 3306 查看鉴定端口是否改变
这里我用同学的电脑数据库的客户端连接测试
可以看到 远程成功地连接上了数据库
版权归原作者 昵称还在想呢 所有, 如有侵权,请联系我们删除。