内容简介:Golang的docker尝试报错:this authentication plugin is not supported解决:这里是因为MySQL 8 支持新的加强的密码加密,这里有两种密码类型
相关链接
Golang的 docker 尝试 https://studygolang.com/articles/11427
基础命令
docker ps -a 列出所有容器 docker stop <name> 停止指定名称的容器 docker rm <name> 删除指定名称的容器 docker image ls 列出所有镜像 docker image rm <imageID> 删除指定ID的镜像,imageID可以只写前三位 docker container ls -a 列出终止状态的容器 docker build -t <name> . 编译镜像,注意最后的点符号是指定当前目录
docker启动mysql
// 拉取 docker pull mysql //启动 mysql 容器( 参数 -i -t 等价于 -it 表示insert , 进入 ; /bin/bash 表示 shell 脚本交互界面 ) docker run -it mysql /bin/bash //查看mysql版本号 mysql --version //退出容器 exit //想要服务一直运行 //(参数 -p 设置端口,--name 取名 ,-e MYSQL_ROOT_PASSWORD=123456 设置 账号为 root ,密码为 sql 123456 -d 表示作为一个守护进程在后台运行 ) docker run -p 3306:3306 --name mysqlTest -e MYSQL_ROOT_PASSWORD=sql123456 -d mysql //查看运行的容器 docker ps -a //查看容器对应的端口号 docker port mysqlTest //方法一、启动mysql(本机装了mysql) mysql -h 127.0.0.1 -u root -p //方法二、启动mysql(本机没装mysql) //先进入容器内、再启动mysql docker exec -it mysqlTest /bin/bash mysql -u root -p //新建数据库 create database mysqlTest; //查看数据库 show databases;
屏幕快照 2019-05-22 下午5.57.15.png
服务端连接数据库
func initDB() (*gorm.DB, error) { s := Mysql{ UserName: "root", Password: "12345678", Database: "mysqlTest", Address: "tcp(localhost:3306)", Parameters: "charset=utf8&parseTime=True&loc=Local", MaxIdle: 10, MaxOpen: 20, Debug: true, MigrationDir: "", } fmt.Println("connect string", s.String()) db, err := gorm.Open("mysql", s.String()) if err != nil { fmt.Println("Open error", err) return nil, err } err = db.DB().Ping() if err != nil { fmt.Println("Ping error", err) return nil, err } db.DB().SetMaxIdleConns(s.MaxIdle) db.DB().SetMaxOpenConns(s.MaxOpen) db.LogMode(s.Debug) // err = db.AutoMigrate(&User{}).Error if err != nil { fmt.Println("AutoMigrate error", err) return nil, err } return db, nil }
报错:this authentication plugin is not supported
解决:这里是因为MySQL 8 支持新的加强的密码加密,这里有两种密码类型
Use Strong Password Encryption Use Legacy Password Encryption
docker启动mysql时默认是第一个strong类型,但是很多终端还不支持strong的加密插件。
需要改为legacy类型
可以在mysql中查看,结果见下图:
mysql> select host,user,plugin from mysql.user;
屏幕快照 2019-05-22 下午6.01.28.png
将里面这几项逐项改为legacy类型:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '12345678'; ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '12345678'; ALTER USER 'mysql.infoschema'@'localhost' IDENTIFIED WITH mysql_native_password BY '12345678'; ALTER USER 'mysql.session'@'localhost' IDENTIFIED WITH mysql_native_password BY '12345678'; ALTER USER 'mysql.sys'@'localhost' IDENTIFIED WITH mysql_native_password BY '12345678';
再次查看,结果如下
屏幕快照 2019-05-22 下午6.07.05.png
再去服务端连接数据库,发现OK啦
以上所述就是小编给大家介绍的《docker学习》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- 一文读懂监督学习、无监督学习、半监督学习、强化学习这四种深度学习方式
- 学习:人工智能-机器学习-深度学习概念的区别
- 统计学习,机器学习与深度学习概念的关联与区别
- 混合学习环境下基于学习行为数据的学习预警系统设计与实现
- 学习如何学习
- 深度学习的学习历程
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。