docker 安装 mysql 8

拉取 msyql 镜像

docker pull mysql:8.0.18

创建 mysql 8 守护式容器

docker run -di --name=mysql8 -p 3306:3306 -v /usr/local/tmp:/etc/mysql/tmp --privileged=true -e MYSQL_ROOT_PASSWORD=xxx mysql:8.0.18

进入容器

docker exec -it mysql8[容器id] /bin/bash

进入数据库修改远程访问

  • mysql -uroot -pxxx
  • use mysql;
  • select host,user from user; 让root能远程连接,host修改为"%",如果是的就不用修改了


    image.png
  • 修改host为%的方法 update user set host='%' where user='root';
  • 刷新权限 FLUSH PRIVILEGES;
  • navicate for mysql 远程连接
  • use mysql;
  • GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
    或者
    GRANT ALL PRIVILEGES ON *.* TO 'root'@'%';
  • FLUSH PRIVILEGES;
  • 此时使用 navicat for mysql 远程连接,提示认证问题,因为 mysql8 及之后的加密规则与之前版本的不同
  • 修改密码为用不过期
    • ALTER USER 'root'@'%' IDENTIFIED BY '123456' PASSWORD EXPIRE NEVER;
  • 修改密码并指定加密规则为 mysql_native_password
    • ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
  • 刷新权限
    • FLUSH PRIVILEGES;
  • 这样navicat for mysql就可以远程连接数据库了;
  • docker commit 容器id 指定要创建的镜像名:版本号
  • mysql8 创建用户
    • 创建用户的操作已经不支持grant的同时创建用户的方式,需先创建用户再进行授权
mysql> grant all on *.* to 'admin'@'%' identified by 'admin123';
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'identified by 'admin123'' at line 1
mysql> create user  'admin'@'%' identified by 'admin123';
Query OK, 0 rows affected (0.06 sec)

mysql> grant all on *.* to 'admin'@'%' ;
Query OK, 0 rows affected (0.04 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
  • 修改密码,注意 'admin'@'%' 这是是 % 还是 localhost 根据用户表 host 决定
    alter user 'admin'@'%' IDENTIFIED WITH mysql_native_password by 'admin123456'

MySQL 解决source 命令导入数据库 乱码

  • mysql -u root -pxxx --default-character-set=utf8
  • use dbname
  • source /etc/my.sql
配置文件解决 myql 导入中文乱码
  • 进入容器
    docker exec -it mysql8 /bin/bash
  • 修改字MySQL字符集
    如果没有 vim 命令,执行以下操作
    1. 执行命令,作用是激活和更新源
      apt-get update
      这个过程可能比较漫长,不过没关系有解决办法,先不要执行以上命令,如果执行了 ctrl+C 结束执行,修改
      /etc/apt/sources.list 文件
      image.png

      在宿主机任意目录下创建 sources.list 文件,我这里是在 root/callcenter/files 目录下,直接使用 vi sources.list 命令没有会自动创建文件,贴入以下代码,换成国内源地址,保存退出
deb http://mirrors.aliyun.com/ubuntu/ trusty main multiverse restricted universe
deb http://mirrors.aliyun.com/ubuntu/ trusty-backports main multiverse restricted universe
deb http://mirrors.aliyun.com/ubuntu/ trusty-proposed main multiverse restricted universe
deb http://mirrors.aliyun.com/ubuntu/ trusty-security main multiverse restricted universe
deb http://mirrors.aliyun.com/ubuntu/ trusty-updates main multiverse restricted universe
  • 执行命覆盖新容器中的 sources.list 文件
    docker cp /root/callcenter/files/sources.list mysql:8/etc/apt/sources.list
  • 重启容器 docker restart mysql8
    做完以上操作无误,这个时候执行 apt-get update 命令,更新速度杠杠的
  1. apt-update 激活后,执行安装 vim 命令
    • apt-get install vim

等待安装完成后,就可以使用 vim 命令了

vim /etc/mysql/my.cnf


image.png
  • 没有修改之前
[mysqld]
pid-file        = /var/run/mysqld/mysqld.pid
socket          = /var/run/mysqld/mysqld.sock
datadir         = /var/lib/mysql
secure-file-priv= NULL
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0

# Custom config should go here
!includedir /etc/mysql/conf.d/
  • 在 [mysqld] 上面添加
[client]
default-character-set=utf8
 
[mysql]
default-character-set=utf8
  • 在 [mysqld] 下面添加
init_connect='SET collation_connection = utf8_unicode_ci'
init_connect='SET NAMES utf8'
character-set-server=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake

保存退出

  • 修改完之后是这样
[client]
default-character-set=utf8

[mysql]
default-character-set=utf8

[mysqld]
init_connect='SET collation_connection = utf8_unicode_ci'
init_connect='SET NAMES utf8'
character-set-server=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake

pid-file        = /var/run/mysqld/mysqld.pid
socket          = /var/run/mysqld/mysqld.sock
datadir         = /var/lib/mysql
secure-file-priv= NULL
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0

# Custom config should go here
!includedir /etc/mysql/conf.d/
  • 重启容器,就不乱码了
    docker restart mysql8
  • 如果手一抖配置文件里写做了,到值无法启动,没关系,将 mysql8 容器中的配置文件考出来在覆盖回去即可,具体操作,以我这里为例
    1. 拷贝容器里的文件
      docker cp mysql8:/etc/mysql/my.cnf /usr/local
      这里的意思是将 mysql8 容器中的 my.cnf 文件拷贝到宿主机 /usr/local 目录下
    2. 还原文件,修改正确后在覆盖回去
      docker cp /usr/local/my.cnf mysql8:/etc/mysql/my.cnf 将文件在覆盖回去
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,539评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,594评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,871评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,963评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,984评论 6 393
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,763评论 1 307
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,468评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,357评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,850评论 1 317
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,002评论 3 338
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,144评论 1 351
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,823评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,483评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,026评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,150评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,415评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,092评论 2 355