Docker内(centos7)安装mysql (8.0)

一:创建好镜像以后,用镜像启动容器的时候,不能像平常一样:docker run -it -p xxx:xxx image:tag bash,因为这样启动的话,没有权限使用systemctl启动服务,而安装好mysql之后 是需要使用systemctl启动mysql服务的,所以 应该使用   docker run -d -name xxx -p xxx: xxx --privileged=true image:tag /usr/sbin/init  启动容器,然后 docker exec -it xxx /bin/bash  进入容器

具体原因解释如下:

Docker的设计理念是在容器里面不运行后台服务,容器本身就是宿主机上的一个独立的主进程,也可以间接的理解为就是容器里运行服务的应用进程。一个容器的生命周期是围绕这个主进程存在的,所以正确的使用容器方法是将里面的服务运行在前台。

再说到systemd,这个套件已经成为主流Linux发行版(比如CentOS7、Ubuntu14+)默认的服务管理,取代了传统的SystemV风格服务管理。systemd维护系统服务程序,它需要特权去会访问Linux内核。而容器并不是一个完整的操作系统,只有一个文件系统,而且默认启动只是普通用户这样的权限访问Linux内核,也就是没有特权,所以自然就用不了!

因此,请遵守容器设计原则,一个容器里运行一个前台服务!

我就想这样运行,难道解决不了吗?

答:可以,以特权模式运行容器


以上这段话转载于  https://blog.csdn.net/zhenliang8/article/details/78330658

二:进入容器之后,开始安装mysql

1、先使用: wget -i -c http://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm  语句 安装Yum Repository  25K

这样就安好了

2、之后   yum -y install mysql80-community-release-el7-3.noarch.rpm    装rpm

这样就成功了

3、使用   yum -y install mysql-community-server  开始装mysql服务器

  这样就安装成功了

4、启动mysql服务器,这就涉及到了 一 中说的,容器的启动方式, 启动命令:  systemctl start mysqld.service  启动之后可以使用  systemctl status mysqld.service  命令查看启动状态

这样就说明 成功启动了

5、查看默认root用户的密码,进入mysql   查看密码命令:  grep "password" /var/log/mysqld.log


6、使用密码进入数据库:

7、进入数据库第一件事就是修改密码, 否则什么都做不了,注意一点,mysql有自己的密码规则,也就是说 类似于密码不能太简单,或者位数太少之类的规则,这就给我们造成了很多困扰,因此 我们使用两个指令 修改规则,我们可以随意修改规则,还有一点要注意的,关于修改密码规则的语句,mysql5.x版本与mysql8.x版本语句是不一样的以下是8.x版本   

(1)、set global validate_password.policy=0;

(2)、set global validate_password.length=6;

5.x版本 修改密码规则语句如下:

(1)、 set global validate_password_policy=0;

(2)、set global validate_password_length=6;

8、修改密码: 使用语句  ALTER user 'root'@'localhost' IDENTIFIED BY '你的密码'   修改密码

修改密码之后 就可以使用mysql数据库了

猜你喜欢

转载自blog.csdn.net/wangziyang777/article/details/115960292