
原因: docker commit 提交后 容器中的 /var/lib/mysql/ 中的 文件是没有被提交到镜像中的。
解决方法:
1、需要 在修改mysql容器 中的 根目录下 新建目录 mdkir /workdir 。
2、 将 /var/lib/mysql 复制 到新建目录中。
3、 修改 /etc/mysql/mycnf
datadir = /workdir/mysql
4、退出 重启 容器就生效。
5、重新 将该容器 commit 为新 的镜像, 再进行开新容器就可以了。
关于Ubuntu中的MySQL *** 作
ubuntu下mysql的常用命令,MySQL数据库的基本 *** 作命令
一、mysql服务 *** 作
0、查看数据库版本sql-
1、netstartmysql//启动mysql服务
2、netstopmysql//停止mysql服务
3、mysql
-h主机地址-u用户名-p用户密码//进入mysql数据库
4、quit//退出mysql *** 作
5、mysqladmin-u用户名
-p旧密码password新密码//更改密码
6、grantselecton数据库to用户名@登录主机identifiedby
"密码"//增加新用户
exemple:
例2、增加一个用户test2密码为abc,让他只可以在localhost上登录,并可以对数据库mydb进行查询、插入、修改、删除的 *** 作
(localhost指本地主机,即MYSQL数据库所在的那台主机),这样用户即使用知道test2的密码,他也无法从internet上直接访问数据
库,只能通过MYSQL主机上的web页来访问了。
grantselect,insert,update,deleteonmydbto
test2@localhostidentifiedby"abc";
如果你不想test2有密码,可以再打一个命令将密码消掉。
grant
select,insert,update,deleteonmydbtotest2@localhostidentifiedby"";
语法如下
mysql-h主机地址
-u用户名
-p用户密码
1、例1:连接到本机上的MySQL:
首先在打开DOS窗口,然后进入目录mysqlbin,再键入命令mysql-uroot-p,回车后提示你输密码,如果刚安装好MYSQL,超级用户root是没有密码的,故直接回车即可进入到MYSQL中了,MYSQL的提示符是:mysql>。
2、例2:连接到远程主机上的MYSQL。假设远程主机的IP为:110110110110,用户名为root,密码为abcd123。则键入以下命令:mysql-h110110110110-uroot-pabcd123。
3、退出MYSQL命令:exit(回车)。
方法/步骤
执行docker search mysql在docker中查找是否有关于mysql的镜像
拉取需要版本的mysql,执行语句:docker pull mysql:80,具体 *** 作如下图
查看安装好的mysql镜像,执行语句:docker images,具体如下图所示:
启动mysql镜像并生成容器,执行语句:
docker run -it --name My1-mysql -p 23306:3306 -e MYSQL_ROOT_PASSWORD=123456 9b51d9275906
其中
MYSQL_ROOT_PASSWORD=123456:表示设置 MySQL 服务 root 用户的密码。
执行docker ps查看启动状态和容器ID
以交互式的方式进入mysql,执行以下语句:
docker exec -it f46fc6db10c1 /bin/bash
具体 *** 作如下图所示:
7
执行命令mysql -h localhost -u root -p,提示输入密码,输入123456,就可以进行相关数据库 *** 作。具体如下图所示:
因为之前root安全设置问题,把root的select_priv, update_priv, insert_priv, delete_priv权限都给下掉了。
现在要grant 修改非root用户权限的时候发现修改不了,才发现是root权限的问题。
修改mysql配置文件
mysqld新增skip-grant-tables,wq保存退出
重启mysql服务
进入mysql
查看mysql用户表信息,发现root没有CURD的权限
发现问题直接update,修改它,如果其它权限没了,也可以修改
修改mycnf,注释掉skip-grant-tables
重启mysql服务
登录root账号,就可以用了
其实和服务器的修改方法一样
查看mycnf挂载情况,如果已经知道了mycnf的挂载位置,就不用执行这一步。
找到mycnf配置文件,这边的挂载到宿主机的配置在/opt/mysql/config/mycnf
注意 5d15960f2861 是我自己的 CONTAINER ID
如果mycnf没有挂载出来,那就进容器里面改mycnf了,注意 5d15960f2861 是我自己的 CONTAINER ID
mycnf 中的mysqld新增skip-grant-tables,wq保存退出
重启docker mysql服务
进入docker mysql容器的mysql服务
查看mysql用户表信息,发现root没有CURD的权限
发现问题直接update,修改它,如果其它权限没了,也可以修改
修改mycnf,注释掉skip-grant-tables
重启docker mysql服务
登录root账号,就可以用了
目的使用docker安装mysql主从集群
docker pull mysql:5733
mkdir -p mydata/mysql/master/log
mkdir -p mydata/mysql/master/data
mkdir -p mydata/mysql/master/conf
docker run -p 3307:3306 --name mysql-master -v /mydata/mysql/master/log:/var/log/mysql -v /mydata/mysql/master/data:/var/lib/mysql -v /mydata/mysql/master/conf:/etc/mysql -e MYSQL_ROOT_PASSWORD=root -d mysql:5733
docker run -p 3308:3306 --name mysql-slave1 -v /mydata/mysql/slave1/log:/var/log/mysql -v /mydata/mysql/slave1/data:/var/lib/mysql -v /mydata/mysql/slave1/conf:/etc/mysql --link mysql-master:master -e MYSQL_ROOT_PASSWORD=root -d mysql:5733
docker run -p 3309:3306 --name mysql-slave2 -v /mydata/mysql/slave2/log:/var/log/mysql -v /mydata/mysql/slave2/data:/var/lib/mysql -v /mydata/mysql/slave2/conf:/etc/mysql --link mysql-master:master -e MYSQL_ROOT_PASSWORD=root -d mysql:5733
映射文件夹修改配置
vi /mydata/mysql/conf/myconf
下面是myconf配置文件内容
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
[mysqld]
init_connect='SET collation_connection = utf8_unicode_ci'
init_connect='SET NAMES utf8'
character-set-server=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake
skip-name-resolve
再修改mycnf配置
vi /mydata/mysql/conf/mycnf
下面是mycnf配置文件内容
[mysqld]
log-bin=/var/lib/mysql/mysql-bin
server-id=1001
expire_logs_days = 30
docker restart mysql
docker exec -it mysql bash
mysql -u root -p
ALTER USER 'root'@'localhost' IDENTIFIED BY 'Lens2022';
grant replication slave on to 'upstream'@'%' identified by '123456';
flush privileges;
show variables like '%log_bin%';
show master status\G;
stop slave;
change master to master_host='master', master_user='slave', master_password='123456', master_port=3307, master_log_file='mysql-bin000001', master_log_pos=154, master_connect_retry=30;
start slave;
show slave status\G;
“dockermysql没有mysqlbinlog”这个问题可以从以下几个角度来解答:
1 从Docker镜像的角度来看,有些Docker镜像可能不包含mysqlbinlog这个工具。这种情况可能是因为Docker镜像的制作者认为mysqlbinlog不是常用的工具,或者为了减少镜像的大小而去掉了mysqlbinlog。这种解答方式比较直接,基于Docker镜像的内容得出的结论也比较可信。
2 从MySQL版本的角度来看,有些MySQL版本可能不支持mysqlbinlog这个工具。这种情况可能是因为MySQL版本过旧,或者因为一些安全和稳定性的考虑而去掉了mysqlbinlog。这种解答方式需要结合具体的MySQL版本进行判断。
3 从容器启动参数的角度来看,有些容器启动参数可能没有开启mysqlbinlog这个选项。这种情况可能是用户在启动容器时没有加上mysqlbinlog选项,或者是Dockerfile中没有设置mysqlbinlog这个选项。这种解答方式需要结合具体的启动参数和Dockerfile文件进行判断。
4 从容器网络的角度来看,有些容器可能无法连接到宿主机器上的mysqlbinlog服务。这种情况可能是因为容器的网络配置不正确,或者是宿主机器上的mysqlbinlog服务没有正确地暴露出来。这种解答方式需要结合具体的网络配置和服务部署进行判断。
综上所述,“dockermysql没有mysqlbinlog”这个问题可以从Docker镜像的角度、MySQL版本的角度、容器启动参数的角度和容器网络的角度来解答。不同的解答方式可能会得出不同的结果,需要根据具体情况进行判断。
1docker images 列出本地主机上的镜像。
2docker pull 从Docker Hub中拉取或者更新指定镜像。
3docker run
-d 标识是让 docker 容器在后台运行。
-p 标识通知 Docker 将容器内部使用的网络端口映射到我们使用的主机上。
--name 定义一个容器的名字,如果在执行docker run时没有指定Name,那么deamon会自动生成一个随机数字符串当做UUID。
-e 设置环境变量,或者覆盖已存在的环境变量。
例如:docker run --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSW
以上就是关于mysql docker commit 后的镜像没有数据全部的内容,包括:mysql docker commit 后的镜像没有数据、关于Ubuntu中的MySQL *** 作(ubuntu启动mysql服务)、如何进mysql数据库等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)