“基于Alpine的mysql Docker镜像”的版本间的差异

来自linux中国网wiki
跳到导航 跳到搜索
第1行: 第1行:
==
+
=usage=
 +
<pre>
 +
 
 +
注意  直接跑docker  docker run -it --name mysql 会再次生成mariadb.conf 小心
 +
数据库文件就是当前目录的mysql
 +
 
 +
cat .env
 +
# Environment variables for docker-compose command
 +
 
 +
# Building
 +
ALPINE_VERSION=3.14
 +
IMAGE_NAME=evan886/mariadb-alpine
 +
 
 +
# Running
 +
CONTAINER_NAME=mysql
 +
MYSQL_ROOT_PASSWORD=root2240881
 +
MYSQL_USER=evan
 +
MYSQL_PASSWORD=evanlai36
 +
MYSQL_DATABASE=admin
 +
 
 +
HOST_ADDRESS=3306
 +
 
 +
 
 +
 
 +
cat docker-compose.yml
 +
version: '2'
 +
services:
 +
 
 +
  mysql:
 +
    image: ${IMAGE_NAME}:${ALPINE_VERSION}
 +
    container_name: ${CONTAINER_NAME}
 +
    environment:
 +
      - MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}
 +
      - MYSQL_USER=${MYSQL_USER}
 +
      - MYSQL_PASSWORD=${MYSQL_PASSWORD}
 +
      - MYSQL_DATABASE=${MYSQL_DATABASE}
 +
    volumes:
 +
      - .:/app
 +
    ports:
 +
      - "${HOST_ADDRESS}:3306"
 +
 
 +
 
 +
 
 +
docker-compose  up -d
 +
 
 +
mysql -uroot -p -h127.0.0.1
 +
</pre>
 +
 
 +
 
  
  

2021年8月19日 (四) 02:15的版本

usage


注意  直接跑docker  docker run -it --name mysql 会再次生成mariadb.conf 小心 
数据库文件就是当前目录的mysql 

cat .env 
# Environment variables for docker-compose command

# Building
ALPINE_VERSION=3.14
IMAGE_NAME=evan886/mariadb-alpine

# Running
CONTAINER_NAME=mysql
MYSQL_ROOT_PASSWORD=root2240881
MYSQL_USER=evan
MYSQL_PASSWORD=evanlai36
MYSQL_DATABASE=admin

HOST_ADDRESS=3306



cat docker-compose.yml 
version: '2'
services:

  mysql:
    image: ${IMAGE_NAME}:${ALPINE_VERSION}
    container_name: ${CONTAINER_NAME}
    environment:
      - MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}
      - MYSQL_USER=${MYSQL_USER}
      - MYSQL_PASSWORD=${MYSQL_PASSWORD}
      - MYSQL_DATABASE=${MYSQL_DATABASE}
    volumes:
      - .:/app
    ports:
      - "${HOST_ADDRESS}:3306"



 docker-compose  up -d

mysql -uroot -p -h127.0.0.1



mysql_secure_installation设置初始密码无效

原因 

以前的SET PASSWORD FOR 'root'@'localhost' = PASSWORD('newpass');已经被弃用,取而代之的是ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';


user mysql;
ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';
flush privileges;
exit;

mariadb通过mysql_secure_installation设置初始密码无效

mysql_secure_installation竟无效

see also

类似的参考 https://github.com/yobasystems/alpine-mariadb/blob/master/alpine-mariadb-amd64/Dockerfile


mysql配置文件生效测试

trouble shooting


我最终在Dockerfile 添加 

COPY  mariadb-server.cnf /etc/my.cnf.d/mariadb-server.cnf
EXPOSE 3306





 van@myxps:~$ mysql -uroot -p -h127.0.0.1 
Enter password: 
ERROR 2013 (HY000): Lost connection to MySQL server at 'handshake: reading initial communication packet', system error: 11


解决办法 注释掉这行  skip-networking      跳过TCP/IP连接
cat /etc/my.cnf.d/mariadb-server.cnf

[mysqld]
#skip-networking


处理过程  其实一开始telent 3306不通就差不多是网络问题啦 , 因为容器里面是可用的 

别人的解决办法 我也记录一下 虽然和我的不同 

1、将 /etc/my.cnf 中的bind-address参数修改成0.0.0.0,表示允许任何ip主机访问此数据库
and 
skip-name-resolve


Docker:无法连接容器中的mysql

https://stackoverflow.com/questions/56580412/mysql-installation-for-alpine-linux-in-docker/68830928#68830928

Lost connection to MySQL server at 'reading initial communication packet', system error: 0