MySQL容器密码设置为强密码

场景:客户需要将有数内部的业务库密码设置为强密码。

操作:

直接说结论:执行以下内容,将“ABCD123”替换为需要的强密码。

SET PASSWORD FOR 'youdata'@'%' = PASSWORD('ABCD123');
SET PASSWORD FOR 'youdata'@'localhost' = PASSWORD('ABCD123');
flush privileges;

以下为科普:

mysql:
  image: hub.c.163.com/yddocker/mysql:stable
  deploy:
    replicas: 1
  networks:
    - youdata
  environment:
    MYSQL_ROOT_PASSWORD: L%)$ew=Ndq
  volumes:
    - /youdata/db/data:/var/lib/mysql
    - /youdata/db/conf:/etc/mysql/conf.d
    - /youdata/db/init-script:/docker-entrypoint-initdb.d

容器启动的时候,通过环境变量 MYSQL_ROOT_PASSWORD设置了root的密码,在映射的 /youdata/db/init-script包含了初始化脚本,即在容器第一次启动的时候会执行以下语句:

CREATE USER IF NOT EXISTS 'youdata'@'%' IDENTIFIED BY 'youdata';
GRANT ALL PRIVILEGES ON *.* TO 'youdata'@'%' WITH GRANT OPTION;
CREATE USER IF NOT EXISTS 'youdata'@'localhost' IDENTIFIED BY 'youdata';
GRANT ALL PRIVILEGES ON *.* TO 'youdata'@'localhost' WITH GRANT OPTION;
CREATE DATABASE IF NOT EXISTS youdata CHARACTER SET utf8mb4;
CREATE DATABASE IF NOT EXISTS youdata_log CHARACTER SET utf8mb4;
CREATE DATABASE IF NOT EXISTS youdata_flow CHARACTER SET utf8mb4;

建立了youdata账号并建立了库。日常使用的youdata账号就是在这里设置的。后续要变更即需改youdata账号。 执行上述的 SET PASSWORD 命令即可。