本文图文讲解在docker中安装mysql以及一些配置和相关的知识点。
官网就简单的一句话描述mysql(The world’s most popular open source database):
百度百科词条这样描述:
mysql是世界上最流行的开源数据库、是最好的关系型数据库管理系统之一,由瑞典MySQL AB 公司开发后来被oracle收购了,支持包括Unix、Linux、Mac和Windows在内超过20个平台和操作系统,有社区版(Community Edition)、商业客户版(Commercial customers)和嵌入式版(Embedded),8.0版本已经支持文档存储:
还好社区版也支持文档存储:
搜索并拉取mysql镜像:
运行mysql镜像并进入容器中用root账号登录mysql并查看数据库信息:
看到以上信息证明安装成功了,然后用工具也是可以连上mysql的:
接着我们可以在工具上就行建库、表、用户以及授权:
上面可以看到这里的版本是8.0.19,需要注意的是MySQL8以上版本的默认加密方式是caching_sha2_password、默认字符集是utf8mb4、默认排序规则是utf8mb4_0900_ai_ci,这里解释说明一下:
utf8 编码最大字符长度为 3 字节,如果遇到 4 字节的宽字符就会插入异常了。三个字节的 UTF-8 最大能编码的 Unicode 字符是 0xffff,也就是 Unicode 中的基本多文种平面(BMP)。也就是说,任何不在基本多文本平面的 Unicode字符,都无法使用 Mysql 的 utf8 字符集存储。包括 Emoji 表情(Emoji 是一种特殊的 Unicode 编码,常见于 ios 和 android 手机上),和很多不常用的汉字,以及任何新增的 Unicode 字符等等。从 5.5.3 开始,MySQL 开始用 utf8mb4 编码来实现完整的 UTF-8,其中 mb4 表示 most bytes 4,最多占用4个字节。对于 CHAR 类型数据,utf8mb4 会多消耗一些空间,根据 MySQL 官方建议,使用 VARCHAR 替代 CHAR。
排序字符集 collation:
utf8mb4_0900_ai_ci是utf8mb4_unicode_ci中的一种。
uft8mb4 表示用 UTF-8 编码方案,每个字符最多占4个字节。
0900 指的是 Unicode 校对算法版本。(Unicode归类算法是用于比较符合Unicode标准要求的两个Unicode字符串的方法)。
ai指的是口音不敏感。也就是说,排序时e,è,é,ê和ë之间没有区别。
ci表示不区分大小写。也就是说,排序时p和P之间没有区别。
如果需要重音灵敏度和区分大小写,则可以使用utf8mb4_0900_as_cs代替。
按照上面操作我们发现并不像旧版本那样存在外网访问不了的问题,查看user表发现是已经放开了的,另外附上修改管理员密码方法,注意不要把加密方式设置成旧的mysql_native_password:
若想在外网使用其他端口访问mysql的话,可以用nginx代理,只需要加入下面这段内容即可,注意我这里的nginx也是用docker镜像的已经编译–with-stream的了:
最后附上我服务器上搭的mysql数据库:https://mysql.xubingtao.cn
展开阅读全文
上一篇: 【转载】狂赚1200亿,差点收购苹果,影响千万程序员,那个叫做太阳的公司却陨落了!
下一篇:在Mac、Windows、Linux、Docker中搭Gradle构建环境并用IDEA创建一个简单的Java项目