zoukankan      html  css  js  c++  java
  • docker 的centos容器搭建javaweb环境时mysql部分遇到的问题

    照着腾讯云上的 搭建Java Web开发环境 这个实验,在自己的服务器上按部就班来做实验,发现jdk和tomcat部分都没有太大问题,一到mysql就不行了,问题很多,出问题的原因我觉得应该是实验室提供的是centos6.8,而购买的服务器选的是centos7。

    使用yum安装mysql

    yum install -y mysql-server mysql mysql-devel

    该命令一执行后就哗啦啦啦地下载一大堆东西,当以为装好后,仔细看最后的信息,发现有点不对劲,显示安装的是mariadb.x86_64 1:5.5.60-1.el7_5,而不是mysql,关于原因:https://www.jb51.net/article/115540.htm

    大概就是说,centos7下新系统无法再使用yum install mysql-server来安装mysql,因为已使用mariadb代替mysql!!!(所以说6和7的差别不是一般的大)

    https://stackoverflow.com/questions/31067135/in-centos7-can-not-start-mysql

    这里抄袭一段记录一下:

     

     

    但是我就想,既然mariadb和mysql的关系那么密切,应该所使用的命令差不多吧?

    service mysqld restart

    执行这句时提示:bash: service: command not found

     

    好像是在docker里面的centos镜像本身就比较小,很多功能默认是没有的,关于bash: service: command not found的解决

    yum list | grep initscripts
    yum install initscripts.x86_64

     

    服务安装了,再次运行 service mysqld restart 出现的提示:

     

    关于这个:Failed to get D-Bus connection: Operation not permitted,貌似是centos7镜像本身的一个bug,解决方法

    https://stackoverflow.com/questions/50393525/failed-to-get-d-bus-connection-operation-not-permitted

     

    这意思是,在执行将镜像变成容器这一步时就应该加上 --privileged 参数,赋予它某种权限?

    所以把自己当前作了修改的容器重新commit成一个名为 centos-java的镜像,下次创建容器时直接用该镜像。

    因为自己的容器里面有tomcat和mysql,所以执行了以下的命令,顺便把端口映射也做了

    docker run -it --privileged -p 8081:8080 -p 3307:3306 centos-java /usr/sbin/init

    但是,问题来了,运行上面那条命令后一直卡住了,一开始以为是需要运行那么久的,但是新开一个连接窗口,用 docker ps 一看,这个容器已经存在了,就是不知道为什么卡住了(可能是少用了参数 ‘-d’)?

    然而,当在新的窗口使用 docker attach +id 想进入该容器时,发现又卡住了!!!

    最后还是用

    docker exec -it containerID /bin/bash

    才进去的!!!

    原因可能是这个?

     

     

    最后终于进到容器里面了,检查了一下java和tomcat的配置,一切正常。

    但是,新问题又来了!

    [root@fd0fd1371b93 bin]# service mysqld start 
      Redirecting to /bin/systemctl start mysqld.service
      Failed to start mysqld.service: Unit not found

     Failed to start mysqld.service: Unit not found.

    原因是之前提到过的,centos7安装的是mariadb了,所以提示找不到mysqld.server

    解决:https://cloud.tencent.com/developer/ask/45981

    (如果提示没有mariadb-server的话还得先 yum install -y mariadb-server

    systemctl start mariadb.service
    systemctl enable mariadb.service
    mysql_secure_installation

     

    执行最后的 mysql_secure_installation 后,就是选择数据库的相关配置了,比如设置秘密等

    配置结束后,想尝试连接数据库,有以下的提示

    host is not allowed to connect to this mariadb server

    好吧,可能是上一步配置选择不当导致的(我记得好像有得选的),现在又要重新搞一遍

    解决:进入到数据库里面执行

    MariaDB [(none)]> grant all privileges on *.* to 'root'@'%' with grant option;

    再执行

    MariaDB [(none)]> flush privileges;

    最后重启数据库服务

    systemctl restart mariadb

    还有就是,如果遇到

    1045 - Access denied for user 'root'@'111.222.111.32'(using password:YES)

    请参考这篇:https://www.cnblogs.com/Guhongying/p/10901895.html

     

  • 相关阅读:
    redis主从配置及哨兵
    解决Linux服务器 FIN_WAIT2 连接过多的问题
    jmeter集群
    Jmeter之TCP取样器
    pydoc
    Sikulix图形自动化
    apifox接口测试工具
    Airtest自动化测试工具
    NodeJs 入门到放弃 — 入门基本介绍(一)
    uni-app小白入门自学笔记(二)
  • 原文地址:https://www.cnblogs.com/Guhongying/p/10904268.html
Copyright © 2011-2022 走看看