linux中的绿色版内存mysql

背景:需要在linux下运行一个绿色版内存mysql

下载 mariadb-13.2.0-linux-systemd-x86_64.tar.gz

https://mirrors.aliyun.com/mariadb/mariadb-13.2.0/bintar-linux-systemd-x86_64/

改造为绿色版

1、在解压后的目录下,创建这个目录

mkdir empty-data

2、写一个完全本地化的 my.cnf,所有路径都用相对路径

bash 复制代码
mariadb-13.2.0-linux-systemd-x86_64$ cat my.cnf 
[mysqld]
basedir = ./
datadir = ./empty-data
port = 3306
bind-address = 0.0.0.0
character-set-server = utf8mb4

# 彻底关闭所有持久化引擎和日志
skip-innodb
default-storage-engine = MEMORY
skip-log-bin
general_log = OFF
slow_query_log = OFF
performance_schema = OFF

# 适配多连接 OLTP
max_connections = 100
max_heap_table_size = 64M
tmp_table_size = 64M

# socket 和 pid 文件全放在本地目录,不碰系统路径
socket = ./mysql.sock
pid-file = ./mysqld.pid

3、写一个启动脚本

bash 复制代码
mariadb-13.2.0-linux-systemd-x86_64$ cat run.sh
#!/bin/bash
# 清空旧数据,保证每次启动都是全新纯内存环境
rm -rf ./empty-data/*
# 仅初始化最小系统表,所有元数据都放在本地目录
./scripts/mysql_install_db --user=$(whoami) --datadir=./empty-data --basedir=./ --skip-test-db --force
# 直接启动,不依赖系统服务
./bin/mysqld_safe --defaults-file=./my.cnf &

4、再写一个stop脚本

bash 复制代码
mariadb-13.2.0-linux-systemd-x86_64$ cat stop.sh 
#!/bin/bash
./bin/mysqladmin -u root -S ./empty-data/mysql.sock shutdown
sleep 2
rm -rf ./empty-data/* ./mysql.sock ./mysqld.pid ./*.err

5、给脚本增加执行权限

chmod +x run.sh stop.sh

6、启动mysql

./run.sh

6、登陆测试

bash 复制代码
./run.sh 会删除empty-data目录
mysql/mariadb会进入出厂状态
此时数据库中的认证模式是密码认证,且密码为空。
MariaDB [(none)]> select host,user,plugin from mysql.user;
+-----------+--------------------+-----------------------
| Host      | User               | plugin                
+-----------+--------------------+-----------------------
| localhost | mariadb.sys        | mysql_native_password 
| localhost | root               | mysql_native_password 
| localhost | abc@zzz.intra      | mysql_native_password 
+-----------+--------------------+-----------------------+ 

但tcp登陆方式的客户端不允许填写空密码,所以tcp登陆不进去
./bin/mariadb -u abc@zzz.intra -p -h 127.0.0.1 -P 3306

只能用操sockt方式登陆,输入空密码即可 
切换到root用户后执行  ./bin/mariadb -u root -p -S ./empty-data/mysql.sock
切换到abc@zzz.intra用户后执行  ./bin/mariadb -u abc@zzz.intra -p -S ./empty-data/mysql.sock

下面这种不输入密码也可以
./bin/mariadb -u abc@zzz.intra -S ./empty-data/mysql.sock
相关推荐
bigcarp1 小时前
Frida-dexdump 绕过app的Root检测
linux·运维·服务器
Lsetea1 小时前
curl访问HTTPS报28 Operation timed out:连接超时与总超时分层排查
运维·https·ssl证书·curl·tls
雨落在了我的手上1 小时前
MySQL数据库基础(14):JDBC编程
数据库·mysql
草莓熊Lotso1 小时前
【C++ 基于微服务的即时通讯系统】Elasticsearch 从安装到 C++ 客户端二次封装全落地
linux·网络·数据库·c++·elasticsearch·微服务
执笔为剑1 小时前
2.1.3、兼容MySQL特性-(数据类型、函数、系统视图、SQL、PL与SQL)
mysql
曦夜日长1 小时前
主从 Reactor 高并发服务器实战 (一):前置知识与功能目标
运维·服务器
2601_965619691 小时前
历史解说视频怎么做:青铜器瓷器文物画面自动对齐的完整教程
运维·nginx·音视频
LiaoWL1232 小时前
从零开始学 Linux(二):Shell 脚本入门与文本处理实战
linux·运维·服务器