docker学习

栏目: 数据库 · 发布时间: 6年前

内容简介: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;
docker学习

屏幕快照 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;
docker学习

屏幕快照 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';

再次查看,结果如下

docker学习

屏幕快照 2019-05-22 下午6.07.05.png

再去服务端连接数据库,发现OK啦


以上所述就是小编给大家介绍的《docker学习》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Pro Git (Second Edition)

Pro Git (Second Edition)

Scott Chacon、Ben Straub / Apress / 2014-11-9 / USD 59.99

Scott Chacon is a cofounder and the CIO of GitHub and is also the maintainer of the Git homepage ( git-scm.com ) . Scott has presented at dozens of conferences around the world on Git, GitHub and the ......一起来看看 《Pro Git (Second Edition)》 这本书的介绍吧!

在线进制转换器
在线进制转换器

各进制数互转换器

MD5 加密
MD5 加密

MD5 加密工具

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试