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
相关推荐
且从容.16 分钟前
Ubuntu安装flume
linux·ubuntu·flume
承渊政道36 分钟前
Linux网络学习【Reactor反应堆模式】
linux·网络·学习·ubuntu·reactor
讯捷蓝达3 小时前
戴尔R720xd服务器卡死在 “Configuring Memory...Done“,换了内存还是卡?问题根本不在内存
运维·服务器
且从容.4 小时前
ubuntu安装flink
linux·ubuntu·flink
浮生若城5 小时前
MySQL:库与表的操作
数据库·mysql
爱和冰阔落5 小时前
【Linux网络】TCP 服务器如何并发处理多个客户端?从 fork、僵尸进程到双重 fork
linux·运维·服务器·网络
程序员沉梦听雨5 小时前
WSL2的安装与使用
linux·wsl
微小的鱼5 小时前
Linux的渲染与显示系统链路
android·java·linux
lisanmengmeng6 小时前
alertmanger 标签 rules 打上分组标签
linux·运维·服务器
Android系统攻城狮6 小时前
Linux FFmpeg深度解析之av_write_frame调用流程与实战(三十三)
linux·运维·服务器·ffmpeg·音视频进阶·ffmpeg音视频