
为什么要绿色版的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,作为程序员,当然选择的是社区版。



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]
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
shared-memory shared-memory-base-name=MYSQL
max_connections=200
max_connect_errors=10
character-set-server=utf8
default-storage-engine=INNODB
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
log_output=FILE
general_log_file=D:\mysql-8.0.42-winx64\data\general.log
general_log=4
log-bin=mysql-bin
expire_logs_days=10
max_binlog_size=100M
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”就可以了。