基于docker安装mariadb配置过程解析

一、安装通过dockerhub搜索要安装的mariadb版本。执行docker pull将镜像拉取到本地。

启动mariadb

docker run --name mariadb-prod -p 3306:3306 -e MYSQL_ROOT_PASSWORD=QBdata@1017 -v /data/software_docker/mariadb_test/data:/var/lib/mysql -d mariadb:10.5.6

  • --name启动容器设置容器名称为mariadb-prod
  • -p设置容器的3306端口映射到主机3306端口
  • -e MYSQL_ROOT_PASSWORD设置环境变量数据库root用户密码为输入数据库root用户的密码
  • -v设置容器目录/var/lib/mysql映射到本地目录/data/software_docker/mariadb_prod/data
  • -d后台运行容器mariadb并返回容器id

安装是否成功

查看容器是否运行

docker ps -a

修改容器为自启动

docker container update --restart=always 容器id

二、修改表名不区分大小写

通过docker ps查看container id,然后通过以下命令进入容器

docker exec -it 5344dfbfc7bc /bin/bash

进入/etc/mysql目录,修改my.cfg文件

#安装vimapt-get updateapt-get install vim#修改my.cfg,添加lower_case_table_name=1vim my.cnf

exit退出容器,通过docker stop/rm/run 重启容器

附、修改docker默认目录

https://ld246.com/article/1566017283738

对于新版本docker(大于v17.05.0),修改安装(存储)目录:通过修改(新建)/etc/docker/daemon.json,指定 data-root 参数的值

按如下操作:

vim /etc/docker/daemon.json

加入

{
  "data-root": "/store/software/docker",
  "storage-driver": "overlay2" # 这个是 Docker 是默认设置,这里也可以不用加
}

然后重启docker服务

systemctl restart docker

通过上述任一方法完成迁移之后,在确认 Docker 能正常工作之后,删除备份的原目录数据:

rm -rf /var/lib/docker.bak

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

时间: 2020-10-15

Docker同时安装MySQL和MariaDB的方法步骤

MySQL和MariaDB的关系 MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可. MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品. 看完MySQL和MariaDB的关系,我们一定会想:既然两者有这么紧密的关系,那么同时安装.启动的时候,是否会有冲突呢? 答案是肯定的,比如:`本文主要讲解的端口号`.我们先看两者的安装,然后在配置阶段,将MariaDB的端口号与MySQL区分开. Docker安装MyS

详解CentOS7 安装 MariaDB 10.2.4的方法

CentOS 6 及之前的版本中提供的是 MySQL 的服务器/客户端安装包,但 CentOS 7 已使用了 MariaDB 替代了默认的 MySQL.MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可 MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品. 1.删除自带 MySQL/MariaDB 1.1.搜索 MariaDB 现有包 使用rpm -qa | grep mariadb搜索 MariaDB 现有的

pycharm远程连接vagrant虚拟机中mariadb数据库

1.虚拟机数据库设置--重启数据库 (1)vi /etc/my.cnf bind = 0.0.0.0 (2).远程不能用root用户连,得新建用户 selecthost,userfrommysql.user; 查看所有用户 createuserdevops@'%'identifiedby'123456'; grantallon*.*todevops@'%'; 给新建的devops用户授权--可操作所有库的所有表 setPASSWORDfordevops@'%'=PASSWORD ('123456

Linux下的 mariadb 使用 root 用户启动方式(推荐)

近日因测试安全产品需要,想调整mariadb的启动用户为root, 经历一番波折后终于成功! 注意:以root身份启动mysql是一项非常危险行为,相当于给了数据库操作用户(数据库管理员或黑客)一个通过mysql对系统直接操作的通道! 实际上是官方不允许root启动的, 因此在一般启动方式下root启动会返回启动失败,并于 /var/log/mariadb/mariadb.log 中提示 Please consult the Knowledge Base to find out how to r

详谈MySQL和MariaDB区别与性能全面对比

MariaDB数据库介绍 MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可.开发这个分支的原因之一是:甲骨文公司收购了MySQL后,有将MySQL闭源的潜在风险,因此社区采用分支的方式来避开这个风险. MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品. MariaDB由MySQL的创始人麦克尔·维德纽斯主导开发,他早前曾以10亿美元的价格,将自己创建的公司MySQL卖给了SUN,此后,随着SUN被甲骨文收购

docker之创建MariaDB镜像的方法

一.基于commit命令方式创建 docker的安装 [root@test01 ~]# yum install docker [root@test01 ~]# systemctl enable docker [root@test01 ~]# systemctl start docker 下载本地镜像 [root@test01 ~]# docker pull centos:7.4.1708 [root@test01 ~]# docker images REPOSITORY TAG IMAGE ID

MySQL/MariaDB的Root密码重置教程

前言 忘记密码是我们经常会遇到了一个问题, 如果您忘记或丢失root密码到你的MySQL或MariaDB的数据库,你仍然可以访问并重置密码,如果你有访问服务器和sudo -启用用户帐户. 几个月前,我在Ubuntu 18.04 上安装了 LAMP.今天,我尝试以 root 用户身份登录数据库,但我完全忘记了密码.经过一阵 Google 搜索并浏览一些文章后,我成功重置了密码.对于那些想知道如何做到这一点的人,这个简短的教程解释了如何在类 Unix 操作系统中重置 MySQL 或 MariaDB

在docker中运行mariadb程序的方法

1.安装docker 2.获取mariadb镜像 docker pull mariadb 首先在https://hub.docker.com查找mariadb官方镜像,相关参数设置https://hub.docker.com/_/mariadb/有详细说明 3.运行镜像 docker run -p 3306:3306 --name mariaone -v /usr/local/mysql/my.cnf:/etc/mysql/my.cnf -e MYSQL_ROOT_PASSWORD=mypass

浅谈MySQL和MariaDB区别(mariadb和mysql的性能比较)

MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可.开发这个分支的原因之一是:甲骨文公司收购了MySQL后,有将MySQL闭源的潜在风险,因此社区采用分支的方式来避开这个风险. MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品. MariaDB由MySQL的创始人麦克尔·维德纽斯主导开发,他早前曾以10亿美元的价格,将自己创建的公司MySQL卖给了SUN,此后,随着SUN被甲骨文收购,MySQL的所有权也落入

Docker实现Mariadb分库分表及读写分离功能

一.简介 本文使用docker实现mysql主从配置,读写分离.分库分表等功能. 二.环境准备 1.基础环境 java java version "1.8.0_111" Java(TM) SE Runtime Environment (build 1.8.0_111-b14) Java HotSpot(TM) 64-Bit Server VM (build 25.111-b14, mixed mode) docker Client: Version: 18.03.0-ce API ve

简单易懂的MyBatis分库分表方案分享

前言 数据库分库分表除了使用中间件来代理请求分发之外,另外一种常见的方法就是在客户端层面来分库分表 -- 通过适当地包装客户端代码使得分库分表的数据库访问操作代码编写起来也很方便.本文的分库分表方案基于 MyBatis 框架,但是又不同于市面上常用的方案,它们一般都是通过编写复杂的 MyBatis 插件来重写 SQL 语句,这样的插件代码会巨复杂无比,可能最终只有插件的原作者自己可以完全吃透相关代码,给项目的维护性带来一定问题.本文的方案非常简单易懂,而且也不失使用上的便捷性.它的设计哲学来源于

MYSQL数据库数据拆分之分库分表总结

数据存储演进思路一:单库单表 单库单表是最常见的数据库设计,例如,有一张用户(user)表放在数据库db中,所有的用户都可以在db库中的user表中查到. 数据存储演进思路二:单库多表 随着用户数量的增加,user表的数据量会越来越大,当数据量达到一定程度的时候对user表的查询会渐渐的变慢,从而影响整个DB的性能.如果使用mysql, 还有一个更严重的问题是,当需要添加一列的时候,mysql会锁表,期间所有的读写操作只能等待. 可以通过某种方式将user进行水平的切分,产生两个表结构完全一样的

Springboot2.x+ShardingSphere实现分库分表的示例代码

之前一篇文章中我们讲了基于Mysql8的读写分离(文末有链接),这次来说说分库分表的实现过程. 概念解析 垂直分片 按照业务拆分的方式称为垂直分片,又称为纵向拆分,它的核心理念是专库专用. 在拆分之前,一个数据库由多个数据表构成,每个表对应着不同的业务.而拆分之后,则是按照业务将表进行归类,分布到不同的数据库中,从而将压力分散至不同的数据库. 下图展示了根据业务需要,将用户表和订单表垂直分片到不同的数据库的方案. 垂直分片往往需要对架构和设计进行调整.通常来讲,是来不及应对互联网业务需求快速变化

MySQL分库分表总结讲解

项目开发中,我们的数据库数据越来越大,随之而来的是单个表中数据太多.以至于查询变慢,而且由于表的锁机制导致应用操作也受到严重影响,出现了数据库性能瓶颈. 当出现这种情况时,我们可以考虑分库分表,即将单个数据库或表进行拆分,拆分成多个库和多个数据表,然后用户访问的时候,根据一定的算法与逻辑,让用户访问不同的库.不同的表,这样数据分散到多个数据表中,减少了单个数据表的访问压力.提升了数据库访问性能. 下面是对项目中分库分表的一些总结: 单库单表 单库单表是最常见的数据库设计,例如,有一张用户(use

Spring Boot 集成 Sharding-JDBC + Mybatis-Plus 实现分库分表功能

一. Sharding-jdbc简介 " Sharding-jdbc是开源的数据库操作中间件:定位为轻量级Java框架,在Java的JDBC层提供的额外服务.它使用客户端直连数据库,以jar包形式提供服务,无需额外部署和依赖,可理解为增强版的JDBC驱动,完全兼容JDBC和各种ORM框架. 官方文档地址:https://shardingsphere.apache.org/document/current/cn/overview/ 本文demo实现了分库分表功能.如有错误,欢迎各位在评论中指出.不

详解yii2实现分库分表的方案与思路

前言 大家可以从任何一个gii生成model类开始代码上溯,会发现:yii2的model层基于ActiveRecord实现DAO访问数据库的能力. 而ActiveRecord的继承链可以继续上溯,最终会发现model其实是一个component,而component是yii2做IOC的重要组成部分,提供了behaviors,event的能力供继承者扩展. (IOC,component,behaviors,event等概念可以参考http://www.digpage.com/学习) 先不考虑上面的

php 分库分表hash算法

复制代码 代码如下: //分库分表算法 function calc_hash_db($u, $s = 4) { $h = sprintf("%u", crc32($u)); $h1 = intval(fmod($h, $s)); return $h1; } for($i=1;$i<100;$i++) { echo calc_hash_db($i); echo "<br>"; } function calc_hash_tbl($u, $n = 256

MYSQL性能优化分享(分库分表)

1.分库分表 很明显,一个主表(也就是很重要的表,例如用户表)无限制的增长势必严重影响性能,分库与分表是一个很不错的解决途径,也就是性能优化途径,现在的案例是我们有一个1000多万条记录的用户表members,查询起来非常之慢,同事的做法是将其散列到100个表中,分别从members0到members99,然后根据mid分发记录到这些表中,牛逼的代码大概是这样子: 复制代码 代码如下: <?php for($i=0;$i< 100; $i++ ){ //echo "CREATE TA

SpringBoot 2.0 整合sharding-jdbc中间件实现数据分库分表

一.水平分割 1.水平分库 1).概念:  以字段为依据,按照一定策略,将一个库中的数据拆分到多个库中. 2).结果  每个库的结构都一样:数据都不一样:  所有库的并集是全量数据: 2.水平分表 1).概念  以字段为依据,按照一定策略,将一个表中的数据拆分到多个表中. 2).结果  每个表的结构都一样:数据都不一样:  所有表的并集是全量数据: 二.Shard-jdbc 中间件 1.架构图 2.特点 1).Sharding-JDBC直接封装JDBC API,旧代码迁移成本几乎为零. 2).适