制作绿色版MySQL数据库适应多项目软件开发

MySQL数据库

为什么要绿色版的MySQL?

之前做PHP项目的时候,各种不同的项目,每个项目统一数据库表的前缀,将不同的项目集中到一个数据库中,开发环境一般不需要多个MySQL数据库服务进程。但是后来Java项目多的时候,发现单一的MySQL数据库进程解决不了数据库名称重复的问题,比如有多个项目都需要用nacos注册中心,而不同的项目的nacos的数据库名称是一样的,这样就会导致MySQL数据库进程启动失败,因为MySQL数据库进程启动的时候会检查数据库名称是否重复,但是不同的项目的nacos的数据库名称是一样的,所以MySQL数据库进程启动失败。或者你会说可以通过不同的nacos命名空间来解决这个问题,但是不同的项目,客户一般都是希望用默认的命名空间,方便未来的项目运维。

所以,为了解决这个问题,我选择了绿色版的MySQL数据库,绿色版的MySQL数据库是一个独立的进程,每个项目都可以启动一个MySQL数据库进程,每个MySQL数据库进程都有自己的数据库名称,这样就可以解决数据库名称重复的问题。

如何制作绿色版的MySQL?

1. 下载MySQL

首先,你需要下载MySQL的绿色版。你可以从MySQL官方网站下载最新的MySQL版本。我们以Windows环境为例,在MySQL官方网站上找到Windows版本的MySQL,作为程序员,当然选择的是社区版。

下载MySQL社区版

选择MySQL社区版

Windows版本的压缩包

2、补充配置文件my.ini

这样下载的MySQL是没有配置文件的,我们需要自己添加配置文件。

在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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
[mysqld]
# 设置3307端口
port=3307
# 设置数据库存放路径
datadir=D:\mysql-8.0.42-winx64\data

log-error=D:/mysql-8.0.42-winx64/log/mysqld.log
pid-file=D:/mysql-8.0.42-winx64/mysqld.pid

# 启用命名管道(可选)
# named-pipe

# 启用共享内存(可选)
shared-memory
shared-memory-base-name=MYSQL

# 允许最大连接数
max_connections=200
# 允许连接失败的次数。这是为了防止有人试图攻击数据库而不做任何事情
max_connect_errors=10
# 服务端使用的字符集默认为UTF8
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
# 默认使用的临时表类型为MYISAM
tmp-table-size=16M
max-heap-table-size=16M
# 允许最大连接数
thread_cache_size=64
# 打开慢查询日志
slow_query_log=1
# 慢查询日志文件
slow_query_log_file=D:\mysql-8.0.42-winx64\log\slow.log
# 长查询时间
long_query_time=1
# 日志类型,包括:
# General - 一般查询
# Error - 错误
# Warning - 警告
# Information - 信息
# 默认为General,Error,Warning
log_output=FILE
# 日志文件
general_log_file=D:\mysql-8.0.42-winx64\data\general.log
# 日志等级,包括:
# 0 - 关闭
# 1 - 错误
# 2 - 警告
# 3 - 信息
# 4 - 详细
# 默认为3
general_log=4
# 二进制日志
log-bin=mysql-bin
# 过期日志天数
expire_logs_days=10
# 最大日志文件大小
max_binlog_size=100M
# 二进制日志格式,包括:
# STATEMENT - 基于SQL语句的日志
# ROW - 基于行的日志
# MIXED - 混合日志
# 默认为STATEMENT
binlog_format=ROW
# 二进制日志的索引
binlog_index=mysql-bin.index
# 事务日志
transaction_log=D:\mysql-8.0.42-winx64\data\mysql-bin.000001
# 事务日志的索引
transaction_log_index=D:\mysql-8.0.42-winx64\data\mysql-bin.000001.index
# 事务日志的大小
transaction_log_max_size=100M

3、初始化数据库

在MySQL的解压目录下,打开命令行工具,完成创建数据库文件夹和初始化数据库的root密码的操作。

(1)需要初始化一组全新的数据库文件: ( –initialize –console )

1
D:\mysql-8.0.42-winx64\bin\mysqld.exe  --defaults-file=D:/mysql-8.0.42-winx64/my.ini --datadir=E:/software2025/mysql-project001-data/data   --initialize --console

(2)跳过权限检查模式启动,设置root密码 ( –skip-grant-tables )

1
D:\mysql-8.0.42-winx64\bin\mysqld.exe  --defaults-file=D:/mysql-8.0.42-winx64/my.cnf --datadir=E:/software2025/mysql-project001-data/data --skip-grant-tables

(3)客户端连接,不需要密码:

1
D:\mysql-8.0.42-winx64\bin\mysql.exe --port 3307 -uroot -p

(4)重置密码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
先执行:   FLUSH PRIVILEGES;
否则会报错: ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement

执行: ALTER USER 'root'@'localhost' IDENTIFIED BY '';
将root在本地内容的密码设置为空。

再执行: CREATE USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root';
将远程连接 3307 端口的root的密码设置为root。

然后执行: grant all privileges on *.* to 'root'@'%';
为root的远程连接授权。

最新再执行: FLUSH PRIVILEGES;
让刚才的权限生效。

可以通过: select host, user, authentication_string, plugin, grant_priv from user;
查询,发现root的localhost的确已经没有密码了。

初始化的数据库文件,我们打个包备份,以后做新项目的时候,就不需要再重复以上过程了。

如何使用绿色版的MySQL?

经过以上步骤,我们已经成功制作了一个绿色版的MySQL数据库。

1. 启动MySQL

在MySQL的解压目录下,打开命令行工具,启动MySQL数据库。

D:\mysql-8.0.42-winx64\bin\mysqld.exe –defaults-file=D:/mysql-8.0.42-winx64/my.cnf –datadir=E:/software2025/mysql-project001-data/data

当然,如果作为后台服务启动,也可以使用以下命令:

1
D:\mysql-8.0.42-winx64\bin\mysqld.exe  --defaults-file=D:/mysql-8.0.42-winx64/my.cnf --datadir=E:/software2025/mysql-project001-data/data --install

这样,MySQL数据库就会作为后台服务启动了。但是,我们一般不这样做,单独开一个cmd或者PowerShell控制台独立运行即可。

2. 连接MySQL

在MySQL的解压目录下,打开命令行工具,连接MySQL数据库。

1
D:\mysql-8.0.42-winx64\bin\mysql.exe --port 3307 -uroot -p

这个时候如果你用Navicate或者DBeaver等图形化工具连接的时候,记得端口号是3307,而不是3306。

3. 关闭MySQL

在MySQL的解压目录下,打开命令行工具,关闭MySQL数据库。

1
D:\mysql-8.0.42-winx64\bin\mysqladmin.exe -u root -p shutdown

这是作为后台服务启动的时候的操作,如果命令行启动,直接用经典的“Ctrl + C”就可以了。


制作绿色版MySQL数据库适应多项目软件开发
https://jycpp.github.io/25-05-17-制作绿色版MySQL数据库.html
作者
数据库管理员
发布于
2025年5月17日
许可协议