1. 宿主机创建映射文件目录,分别是/home/mysql/conf,/home/mysql/data、/home/mysql/logs
  2. conf目录下创建my.cnf文件

    [client]
    default-character-set = utf8mb4
    
    [mysqld]
    pid-file        = /var/run/mysqld/mysqld.pid
    socket          = /var/run/mysqld/mysqld.sock
    datadir         = /var/lib/mysql
    secure-file-priv= NULL
    
    # Custom config should go here
    # 字符集
    character_set_server=utf8mb4
    collation-server=utf8mb4_unicode_ci
    # 创建新表时将使用的默认存储引擎
    default-storage-engine=INNODB
    
    # 是否对sql语句大小写敏感,0:大小写敏感,1:忽略大小写区别。,只能在初始化服务器时配置。禁止在服务器初始化后更改
    # 设置为2时,表名和数据库名按声明存储,但以小写形式进行比较
    lower_case_table_names = 2
    
    # 最大连接数
    max_connections = 1000
    
    # Innodb缓存池大小
    innodb_buffer_pool_size = 4G
    
    # 表文件描述符的缓存大小
    table_open_cache_instances=1
    table_open_cache=2000
    table_definition_cache=2000
    
    !includedir /etc/mysql/conf.d/
  3. 在conf、data、logs同层目录下,创建start.sh

    docker run --restart=always \
    --name mysql \
    --privileged=true \
    -d -p 3306:3306 \
    -v /home/mysql/conf/my.cnf:/etc/mysql/my.cnf \
    -v /home/mysql/logs:/logs \
    -v /home/mysql/data:/var/lib/mysql \
    -e MYSQL_ROOT_PASSWORD=Hanyuan1230@... \
    mysql:8.0.35
  4. 拉取docker的镜像文件 docker pull mysql:8.0.35
  5. sh start.sh命令执行脚本代码,创建mysql的docker容器
  6. 进入mysql容器,docker exec -it mysql bash
  7. 登录mysql,mysql -u root -p
  8. 此时root用户外界还不能使用,要给root分配权限。

第一行命令:grant all PRIVILEGES on . to root@'%' WITH GRANT OPTION;

第二行命令:use mysql

第三行命令:update user set host='%' where user='root';

  1. 至此,外界就可以用root连接到mysql了
Last modification:December 18th, 2023 at 05:21 pm