配置 MySQL

一.Windows 环境下安装 MySQL

在 Windows 环境下安装 MySQL 主要是借助 Visual Studio 的 MSVC 工具集进行开发。后续当然还是将工程迁移到 Linux 系统上最好。

在 MySQL 官网(MySQL官网))可以看到三种方式:安装器,压缩包,调试测试版本。

版本选择.png

对于开发和运维而言,前面两种是最常用的。通过安装器安装直接通过 MySQL Installer 可执行文件运行即可。下面详细阐述通过压缩包安装

1.1 下载并安装 MySQL 服务

此方法通过下载压缩包然后自己解压配置 MySQL 环境。

  1. 首先,选择开发需要的稳定版本压缩包并下载。笔者这里选择 8.0.41 版本安装。
  2. 然后,将对应版本 MySQL 压缩包解压到想要安装的位置笔者安装到下面的路径。
1
D:\SoftWare\DeveloperEnv\MySQL\mysql-8.0.41
  1. 在解压完的 MySQL 目录创建一个 my.ini 文件并填入如下内容
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
[mysqld]
# 设置3308端口
port=3308
# 设置 MySQL 安装目录
basedir=D:\SoftWare\DeveloperEnv\MySQL\mysql-8.0.41
# 设置 MySQL 数据库数据存放目录(此处可能需要自己在bin的同级目录创建data文件夹)
datadir=D:\SoftWare\DeveloperEnv\MySQL\mysql-8.0.41\data
# 允许最大连接数
max_connections=200
# 允许连接失败的次数。
max_connect_errors=10
# 服务端使用的字符集默认为 utf8
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
# 默认使用“mysql_native_password”插件认证
#mysql_native_password
default_authentication_plugin=mysql_native_password
[mysql]
# 设置 MySQL 客户端默认字符集
default-character-set=utf8
[client]
# 设置 MySQL 客户端连接服务端时默认使用的端口
port=3308
default-character-set=utf8
  1. 在 MySQL 安装目录的 bin 目录下打开终端并输入如下命令初始化 MySQL 数据库
1
2
3
4
# 初始化 MySQL 生成一个随机密码
.\mysqld.exe --initialize --console

# 此次生成的随机密码为: yjIW7:p*Pn,j

初始化MySQL.png

  1. 在 MySQL 安装目录的 bin 目录下以管理员身份打开终端并输入如下命令安装并运行 MySQL 服务
1
2
## 安装 MySQL 服务并运行  
.\mysqld.exe --install mysql

安装MySQL服务.png

1.2 修改 MySQL 密码

  1. Win+R 输入 services.msc 找到名为 mysql 的服务项并设置为自动启动,这样系统每次开机会自动启动 MySQL 服务。

自动启动.png

  1. 依然是在 MySQL 安装目录的 bin 目录下打开终端并输入如下命令安装并运行 MySQL
1
.\mysql.exe -uroot -p

第一次运行,此处输入的密码为之前初始化生成的随机密码

第一次运行MySQL.png

  1. 进入 MySQL 终端命令行后将密码更改为自己记住的密码
1
2
# 修改密码为123456
ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';

更改密码.png

成功之后下一次登录 MySQL 时用最新的密码即可。

1.3 配置环境变量

由于 MySQL 解压缩到一个不知名路径下,每次只能在 MySQL 安装目录下的 bin 目录中调用终端运行 MySQL 命令行,系统无法找到此程序的路径,因此需要配置系统环境变量。

  1. 打开系统环境变量然后创建一个 MySQL_HOME 然后将 MySQL_HOME 添加到 path 变量中。

添加 MySQL_HOME 结果:
新建MySQL_HOME.png

添加 path 变量结果:
添加path变量.png

添加环境变量后运行 MySQL 结果:
添加环境变量后访问.png

1.4 JDBC 风格接口

下载 Mysql Connector C++ 库

标准 MySQL 服务提供的数据库访问接口是基于 C 语言风格的,为适应面向对象编程设计,改用 Mysql Connector C++ 库提供的接口访问 MySQL。

[!tip]
Mysql Connector C++ 版本要与开发环境相对应,如果开发环境为 debug 版本,那么Mysql Connector C++ 也需要下载 debug 版本;反之,如果开发环境为 release 版本,那么Mysql Connector C++ 也需要下载 release 版本。否则会报 terminate called after throwing an instance of 'std::bad_alloc' 错误.

在 MySQL 官网(Mysql Connector C++)下载对应版本,由于在此 Windows 环境下为 debug 版本,因此 Mysql Connector C++ 也下载 debug 版本。笔者这里选择 8.3.0 版本安装。

debug版本.png

VS 工程配置 Mysql Connector C++

  1. 将下载的压缩包解压到安装目录,这里笔者将其放置在 MySQL 同一路径下统一管理。
1
D:\SoftWare\DeveloperEnv\MySQL\mysql-8.0.41
  1. 在 Visual Studio 工程中配置如下项:

VC++ 目录包含目录项 添加如下路径:

1
2
D:\SoftWare\DeveloperEnv\MySQL\mysql-connector-c++-8.3.0\include

VC++ 目录库目录项 添加如下路径:

1
D:\SoftWare\DeveloperEnv\MySQL\mysql-connector-c++-8.3.0\lib64\vs14

D:\SoftWare\DeveloperEnv\MySQL\mysql-connector-c++-8.3.0\lib64\debug 目录下的 mysqlcppconn8-2-vs14.dllmysqlcppconn9-vs14.dll 两文件拷贝到项目根目录下。

同时为了编译后程序能正常运行,需要将这两文件拷贝到 debug 环境中,因此可以通过在 生成事件->生成后事件 中添加如下代码自动复制这两个动态库文件。

1
2
xcopy "$(ProjectDir)config.ini" "$(SolutionDir)$(Platform)\$(Configuration)\" /y 
xcopy "$(ProjectDir)*.dll" "$(SolutionDir)$(Platform)\$(Configuration)\" /y

二.Linux 环境下安装 MySQL

Linux的 MySQL 库直接编译安装即可。ArchLinux 系统中安装 MySQL 即可。

2.1 安装

直接在官方仓库获取 MySQL 包。

1
sudo pacman -S mysql

[!tip]
在 ArchLinux 的软件仓库中,mysql 这个包实际提供的是 MariaDB(一个广泛兼容的 MySQL 分支)。对于大多数情况,它们的使用方式是一致的。如果要安装 Oracle 官方的 MySQL,可能需要添加其他第三方源,但 MariaDB 通常是推荐且更易于维护的选择。

2.2 初始化

使用如下命令进行 MySQL 数据库初始化,初始化会生成系统数据库表和 root 用户临时密码

1
2
3
4
# 初始化 MySQL 生成一个随机密码
sudo mysqld --initialize --user=mysql --basedir=/usr --datadir=/var/lib/mysql

# 此次生成的随机密码为: hf2jsTeO5t,>

初始化结果示例如下图:

初始化.png

[!tip]
/var/lib/mysql目录非空导致初始化失败,需要先清理该目录(注意:这会删除所有现有MySQL数据),然后再重新执行初始化

2.3 基本配置

启动服务

初始化成功就可以启动 MySQL 服务器端

1
2
3
4
5
6
7
# 立即启动服务
sudo systemctl start mysqld
# 设置开机自启动
sudo systemctl enable mysqld

# 查看状态mysqld
sudo systemctl status mysqld

登录服务

然后登录到 MySQL 命令行,此处登录的密码为初始化时生成的随机密码

1
mysql -u root -p

修改密码

为方便下次登录,可更改密码:

1
2
# 修改密码为123456
ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';

更改成功后,下次登录使用新的密码

配置环境变量

为了方便地在任何路径下直接使用 mysql等命令,你可以将 MySQL 的可执行文件路径添加到系统的环境变量 PATH中。

  1. 编辑配置文件 /etc/profile

    1
    sudo vim /etc/profile
  2. 在文件末尾添加以下行:

    1
    2
    export MYSQL_HOME=/usr 
    export PATH=$PATH:$MYSQL_HOME/bin

[!tip]
MySQL 的默认安装路径可能在 /usr/bin,该路径通常已在 PATH中,如需指定 MYSQL_HOME可参考此步骤

  1. 保存文件后,使用 source命令使更改立即生效:
    1
    source /etc/profile

图形化管理

在 Linux 系统上可以安装图形化数据库管理工具,例如 DBeaver。使用 pacman 安装 DBeaver,也可以在 AUR 仓库中获取 Navicat:

1
sudo pacman -S dbeaver

[!tip]
DBeaver 和 DataGrip 是同种类型风格的数据库管理软件,而 Navicat 风格稍有区别

2.4 JDBC 风格接口

采用 JDBC 封装接口依然需要 MySQL 的配置环境,它与 C 封装接口区别在于 JDBC 封装接口更适应面向对象编程设计

1
2
安装 MySQL 开发包(用于 C API),同时也是 MySQL Connector/C++ 所依赖环境
sudo pacman -S mysql

手动源码安装 MySQL Connector/C++

  1. 安装依赖:
    1
    sudo pacman -S base-devel cmake gcc openssl boost

【待更新】

从官方源下载最新版本

访问 MySQL Connector/C++ 下载页面获取最新下载链接(当前最新版本为 8.1.0)。

【待更新】

2.5 测试与编译

C 封装接口就不做过多测试,实际开发过程更多是使用 C++,因此只设计针对 JDBC 封装接口的测试用例

三.Docker 环境下安装 MySQL

将 MySQL 部署到 Docker 环境中可以有效隔绝外部攻击,通过设置不同策略实现安全访问 MySQL 服务。笔者在云服务器 Linux 系统上部署 Docker 环境,并在 Docker 环境中部署 MySQL 实现远程访问 MySQL 服务。

具体安装流程可以参看 [[Docker 配置 Redis 和 MySQL]]