zoukankan      html  css  js  c++  java
  • docker 安装mysql mongo

    Docker安装Mysql

    1.拉取镜像

    docker pull mysql/mysql-server

    2.运行mysql

    docker run -d -p 3306:3306 --name [Name] [ImageName]
    //示例
    docker run -d -p 3306:3306 --name mysql01 mysql/mysql-server

    3.进入容器

    docker exec -it [ContainerName] bash
    //示例
    docker exec -it mysql01 bash

    4.进入mysql的命令行

    命令行进入mysql的root账户:

    mysql -uroot -p

    这时候操作mysql会报错 ,让修改密码 请看 常见错误解决模块

    创建新用户
    mysql> CREATE USER 'test'@'localhost' IDENTIFIED BY 'pwd123456';
    mysql> GRANT ALL PRIVILEGES ON *.* TO 'test'@'localhost' WITH GRANT OPTION;
    mysql> CREATE USER 'test'@'%' IDENTIFIED BY 'pwd123456';
    mysql> GRANT ALL PRIVILEGES ON *.* TO 'test'@'%' WITH GRAN  T OPTION;
    修改MYSQL 默认字符集

    添加到my.cnf

    [mysqld]
    character-set-server=utf8
    [client]
    default-character-set=utf8 
    [mysql]
    default-character-set=utf8

    查看字符集命令

    show variables like '%char%';
    docker容器参数启动Mysql (用容器参数添加新用户和修改root账户密码,修改字符集)

    直接复制这个就可以了

    docker run -d -p 3306:3306 -e MYSQL_USER="test" -e MYSQL_PASSWORD="password" -e MYSQL_ROOT_PASSWORD="password" --name [Name] [ImageName] --character-set-server=utf8 --collation-server=utf8_general_ci

    这个和上面一样只不过用换行整理过(不要复制这个,用不了)

    docker run -d -p 3306:3306 
    -e MYSQL_USER="test" 
    -e MYSQL_PASSWORD="password" 
    -e MYSQL_ROOT_PASSWORD="password" 
    --name [Name] [ImageName] 
    --character-set-server=utf8 
    --collation-server=utf8_general_ci

    挂载资料卷

    mysql挂载资料卷

     
    提前在指定的目录下创建一个my.cnf文件,目录名最好为英文且不带特殊符号和空格,文件内容如下,注意:粘贴时要把每一行末尾的空格去除,否则运行时会报错说utf8编码错误

    #注意:需要先创建/docker/mysql/config/my.cnf文件和/docker/mysql/data文件夹

    my.cnf如下

    [mysqld]
    user=mysql
    character-set-server=utf8
    [client]
    default-character-set=utf8
    [mysql]
    default-character-set=utf8

    用外部volume

    docker run -d -p 3306:3306 --name mysql01 -v=/docker/mysql/config/my.cnf:/etc/my.cnf -v=/docker/mysql/config/data:/var/lib/mysql mysql/mysql-server 

    mongo挂载资料卷

    docker run -d -p 27017:27017 --name mongo01 -v /docker/mongo/config:/data/configdb -v /docker/mongo/db:/data/db mongo

    常见错误解决

    修改密码语句

    mysql5.7版本语法:

    SET PASSWORD FOR 'root'@'localhost' = PASSWORD('password');

    mysql5.7之后版本语法:

    ALTER user 'root'@'localhost' IDENTIFIED BY 'password'
    navicat连接mysql报错1251解决方案

    MySQL8.0,发现Navicat连接不上,总是报错1251;

    原因是MySQL8.0版本的加密方式和MySQL5.0的不一样,连接会报错。

    1.先通过命令行进入mysql的root账户:

    mysql -uroot -p

    2.更改加密方式

    ALTER USER 'root'@'localhost' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER;

    3.重新修改密码(注意修改你要远程连接的用户)

    ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';

    4.刷新

     FLUSH PRIVILEGES;

    Docker run with 环境变量和镜像配置

    备注: : When this is true (which is its default state, unless MYSQL_ROOT_PASSWORD is set or MYSQL_ALLOW_EMPTY_PASSWORD is set to true), a random password for the server's root user is generated when the Docker container is started
    当这个MYSQL_RANDOM_ROOT_PASSWORD 为true 时 为root用户设置密码是没有作用的还是会生成随机的密码,设置为false 或者不加这个环境变量   
  • 相关阅读:
    MySQL主主同步方案
    Mysql增量备份与恢复
    配置合适的存储引擎
    基于Amoeba读写分离
    部署myaql主从异步复制
    MySQL完全备份操作
    echo 命令详解
    ELK 基本部署
    zabbix 简介
    基于 Git Tag 发布及回滚代码
  • 原文地址:https://www.cnblogs.com/shitong/p/10148851.html
Copyright © 2011-2022 走看看