使用docker安装Mariadb过程中出现了很多问题,这里汇总下
启动环境 centos7
新建mysql/my.cnf文件,作为mysql的配置文件
skip-name-resolve user=mysql # user为root,会导致下面的报错 character-set-server=utf8 default_authentication_plugin=mysql_native_password sql_mode=ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION lower_case_table_names=1 #忽略表名大小写 # skip-grant-tables 如果密码不生效可以注释这一行,然后进入容器配置密码 [client] default-character-set=utf8 [mysql] default-character-set=utf8 复制代码
通过docker-compose启动mysql
version: '3' networks: app-web: driver: bridge services: mysql: image: mariadb ports: - 3306:3306 command: --default-authentication-plugin=mysql_native_password restart: always networks: - app-web environment: - TZ=Asia/Shanghai - MYSQL_USER=admin - MYSQL_ROOT_PASSWORD=123456 privileged: true volumes: - ./mysql/data:/var/lib/mysql - ./mysql/my.cnf:/etc/mysql/my.cnf - /etc/localtime:/etc/localtime 复制代码
发现报错,容器内文件没有访问权限,用镜像启动的数据库没有root用户。
2021-10-10 12:25:27+08:00 [Note] [Entrypoint]: Entrypoint script for MariaDB Server 1:10.6.4+maria~focal started. 2021-10-10 12:25:27+08:00 [Note] [Entrypoint]: Switching to dedicated user 'mysql' 2021-10-10 12:25:27+08:00 [Note] [Entrypoint]: Entrypoint script for MariaDB Server 1:10.6.4+maria~focal started. 2021-10-10 12:25:28+08:00 [Note] [Entrypoint]: Initializing database files chown: changing ownership of '/var/lib/mysql/': Operation not permitted Cannot change ownership of the database directories to the 'root' user. Check that you have the necessary permissions and try again. 复制代码
1、docker-compose.yml 增加配置privileged:true
,还是会有同样的问题,主要是my.cnf中的user=root造成的
2、查看资料发现下面两种解决方法
方法一
$ docker run -d -e MYSQL_ROOT_PASSWORD=admin -v /home/epccweb/test:/var/lib/mysql --user 1000:50 mysql:5.7 $ # or whatever user and group id that the container sees on the mounted folder: $ docker run -it --rm -v /home/epccweb/test:/var/lib/mysql mysql:5.7 ls -aln /var/lib/mysql 复制代码
由于要先启动容器,在修改,这里已启动就挂,所以没发使用。
方法二
https://stackoverflow.com/questions/24288616/permission-denied-on-accessing-host-directory-in-docker 进入主机的vi /etc/selinux/config尝试禁用主机的SELINUX=disabled,发现本来就是禁止的,所以暂时放弃该方法启动数据库 复制代码
docker run -d --restart=always -p 3306:3306 -e MYSQL_USER=admin -e TZ=Asia/Shanghai --privileged=true -e MYSQL_ROOT_PASSWORD='123456' -v /data/mysql/data:/var/lib/mysql -v /data/mysql/my.cnf:/etc/mysql/my.cnf -v /etc/localtime:/etc/locatime mariadb 复制代码
成功启动docker镜像
尝试进入数据库,发现报错,但密码不生效
1045 - Access denied for user 'root'@'localhost' (using passwor...) 在my.cnf中增加skip-grant-tables, 跳过密码登陆,然后执行下面命令修改用户密码 use mysql; update user set password=password("123456") where user="root"; 报错信息: ERROR 1348 (HY000): Column 'Password' is not updatable // 继续执行报错 MariaDB [mysql]> ALTER USER 'root'@'localhost' identified by '123456'; ERROR 1290 (HY000): The MariaDB server is running with the --skip-grant-tables option so it cannot execute this statement // 重启下:flush privileges; // 再次执行 MariaDB [mysql]> set password for 'root'@'localhost' = '123456'; ERROR 1372 (HY000): Password hash should be a 41-digit hexadecimal number // 对密码进行转化 MariaDB [mysql]> select password(123456) -> ; +-------------------------------------------+ | password(123456) | +-------------------------------------------+ | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 | +-------------------------------------------+ // reset password MariaDB [mysql]> set password for 'root'@'localhost' = '*6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9'; Query OK, 0 rows affected (0.002 sec) 复制代码
然后删除my.cnf中的skip-grant-tables,重启容器,使用密码登陆,发现成功
作者:前端中后台
链接:https://juejin.cn/post/7145351253130739725
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/127968.html
摘要:停掉一台,查看负载均衡健康检查是否正常搭建集群创建需使用的数据库启动访问增加访问控制。给配置负载均衡,增加配置重启访问添加主机,添加容器,测试是否正常,恶意掉容器或者关闭机器,查看整个集群是否正常。 rancher高可用集群搭建 一、搭建环境 1.安装系统 下载centos最新版, http://mirrors.sohu.com/centos/7/isos/x86_64/CentOS...
阅读 165·2024-11-07 18:25
阅读 130224·2024-02-01 10:43
阅读 808·2024-01-31 14:58
阅读 798·2024-01-31 14:54
阅读 82662·2024-01-29 17:11
阅读 2952·2024-01-25 14:55
阅读 1949·2023-06-02 13:36
阅读 2914·2023-05-23 10:26