docker学习

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

内容简介: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学习》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

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

多处理器编程的艺术

多处理器编程的艺术

(美)Maurice Herlihy、(美)Nir Shavit / 机械工业出版社 / 2013-2 / 79.00元

工业界称为多核的多处理器机器正迅速地渗入计算的各个领域。多处理器编程要求理解新型计算原理、算法及编程工具,至今很少有人能够精通这门编程艺术。 现今,大多数工程技术人员都是通过艰辛的反复实践、求助有经验的朋友来学习多处理器编程技巧。这本最新的权威著作致力于改变这种状况,作者全面阐述了多处理器编程的指导原则,介绍了编制高效的多处理器程序所必备的算法技术。了解本书所涵盖的多处理器编程关键问题将使在......一起来看看 《多处理器编程的艺术》 这本书的介绍吧!

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

随机密码生成器
随机密码生成器

多种字符组合密码

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具