MySQL是非常常用的关系型数据库,无论是大厂还是小厂,都有它的身影。最大的优点是免费,安装起来也比较简单。
MySQL的架构
画了个简图,描述了下MySQL的架构。
其中的比较有趣的点在于连接池和存储引擎。连接池缓存了数据库和客户端的TCP连接,以减少建立连接的开销。存储引擎的使用则采用了插件化的方式,数据库引擎定义了接口,实现了接口就能被整合到数据库。
安装
首先是更新软件包列表
sudo apt update
然后是安装mysql-server
sudo apt install mysql-server
安装时会询问一下,填个 y 即可。
装完之后,会自动启动服务,可以用systemctl status看下状态
sudo systemctl status mysql
为active代表启动没问题
修改安全配置
然后我们设置下安全配置
sudo mysql_secure_installation
会出现如下图,一般来说这里我们会选y,它会要求我们的密码达到一定的强度才能改成功
然后是是否删除匿名用户,也是 y
然后是一个安全选项,问是否要禁止远程登录MySQL。一般来说,业务服务和数据库的连接都是单独建账户,而不是使用root账户,所以这个也是y
然后是是否要移除测试数据库,选y
然后是要不要立即重新加载权限表,选y
修改root密码
用sudo登录mysql
sudo mysql
执行修改密码的sql
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'Root123.';
注意要记一下密码,要不修改起来会比较麻烦。
最后刷新下权限
FLUSH PRIVILEGES;
修改访问配置
我们需要允许远程登录,所以这里要修改下配置
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
bind-address要改成0.0.0.0
然后重启服务
sudo systemctl restart mysql
连接测试
首先是添加防火墙策略,开放3306端口。如果没有启用防火墙,这一步可以省略
sudo ufw allow 3306
我们来建一个数据库,并创建一个允许远程连接的账户
创建数据库
create database mydata;
创建用户
CREATE USER 'friend'@'192.168.68.1' IDENTIFIED WITH 'mysql_native_password' BY 'Friend123.';
简单说明下
- CREATE USER: 用于创建一个新用户。
- friend: 这是你要创建的用户的用户名。
- 192.168.68.1: 这是允许连接的远程主机的 IP 地址。只有来自该 IP 地址的连接才能使用这个用户进行认证和访问数据库。
- IDENTIFIED WITH 'mysql_native_password': 指定用户的认证方式。在这里,使用的是 MySQL 原生密码认证方式。
- IDENTIFIED BY 'Friend123.': 用于设置用户的密码。
然后是授权
GRANT ALL PRIVILEGES ON mydata.* TO 'friend'@'192.168.68.1';
刷新权限
FLUSH PRIVILEGES;
然后使用工具连接即可连接成功。