在centos7环境下建立MariaDB多实例

环境全部基于vmware player 12

os: centos7

mariadb: mariadb-10.1.12-linux-x86_64.tar.gz

 

主要根据MariaDB给出的帮助文档,以及网上的这篇帖子进行操作

中间碰到了无数问题,在google的帮助下都一一解决了

耗费好几个小时,我真是个鶸

 

 

su root #切换到root用户

groupadd mysql #添加mysql组

useradd -g mysql mysql #在mysql组中添加mysql用户

cd /usr/local 

gunzip < /home/cc/Destop/mariadb-10.1.12-linux-x86_64.tar.gz | tar xvf - #解压MariaDB二进制安装包

ln -s mariadb-10.1.12-linux-x86_64 mysql #创建符号链接

cd mysql

chown -R mysql . #修改权限

chgrp -R mysql . #修改权限

mkdir -p  /var/lib/mysql3307 #创建数据文件夹

chmod --reference /var/lib/mysql /var/lib/mysql3307 #将数据文件夹的访问权限授予mysql,否则这个文件夹只有root用户可以访问

chown --reference /var/lib/mysql /var/lib/mysql3307

scripts/mysql_install_db --user=mysql --datadir=/var/lib/mysql3307 #初始化数据文件夹

cp -p /etc/my.cnf /var/lib/mysql3307/my.cnf #在数据文件夹中添加my.cnf配置文件,下一步会修改它

修改/var/lib/mysql3307/my.cnf,如下所示

[mysqld]
datadir=/var/lib/mysql3307
socket=/var/lib/mysql/mysql3307.sock
port=3307

[mysqld_safe]
log-error=/var/log/mysqld3307.log
pid-file=/var/run/mysqld/mysqld3307.pid

bin/mysql_safe --defaults-file=/var/lib/mysql3307/my.cnf --user=mysql &

这一步后开始报错,查看错误信息后发现,是因为默认的位于/etc/下的my.cnf文件中,有这样两个路径: /var/og/mariadb/mysql.log 和 /var/run/mariadb/mysql.pid,而这两个路径不存在,所以报错

创建这两个文件夹后,依然报错,原因是权限不够,将/var/run/mariadb目录授权给mysql用户即可

bin/mysql_safe --defaults-file=/var/lib/mysql3307/my.cnf &  #以我们指定的my.cn配置文件为要求,启动mysq实例

然后用命令 netstat -tanp | grep 3307,即可看到mysql已经在监听3307端口了

bin/mysql -uroot -p -h127.0.0.1 -P3307,连入mysql

修改root密码,然后用source导入数据库初始化脚本

bin/mysqladmin -S /var/lib/mysql/mysql3307.sock shutdown -P #结束3307号mysql进程

cp -r -p /var/lib/mysql3307 /var/lib/mysql3308 #复制mysql数据文件夹,-p参数是为了连同权限一起复制,否则复制过来的权限全是root,mysql就无法访问了

cp -r -p /var/lib/mysql3307 /var/lib/mysql3309

修改mysql3308与mysql3309文件夹中的my.cnf文件,然后运行

bin/mysqld_safe --defaults-file=/var/lib/mysql3307/my.cnf &

bin/mysqld_safe --defaults-file=/var/lib/mysql3308/my.cnf &

bin/mysqld_safe --defaults-file=/var/lib/mysql3309/my.cnf &

 

即可同时运行三个MariaDB数据库实例

 

posted @   qeDVuHG  阅读(1499)  评论(0编辑  收藏  举报
编辑推荐:
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
阅读排行:
· Ollama——大语言模型本地部署的极速利器
· 使用C#创建一个MCP客户端
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· Windows编程----内核对象竟然如此简单?
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
点击右上角即可分享
微信分享提示