背景
最早创始人(MySQL之父):Monty Widenius
历史
- MySQL最早可追溯到1979年
- 1996年10月MySQL 1.0发布
- 2000 年的时候,MySQL 公布了自己的源代码,并采用GPL(GNU General Public License)许可协议
- 2001年MySQL 3.23发布
- 最早在生产环境使用的版本
- 集成MyISAM和InnoDB存储引擎
- 最新发布的General Availability版本
- MySQL 8.0.26 (2021-07-20, General Availability)
主流分支版本:
Drizzle(2016 年 7 月废弃)。
MariaDB是在Oracle收购MySQL后,Monty自己出来单干的mysql数据库。MySQL中的“My”是他大女儿的名字,MaxDB中的“Max”是二女儿的名字,MariaDB中的“Maria”是小女儿的名字,可见Monty大佬多么爱他的女儿。[doge]
CentOS7系统中默认数据库是 MariaDB,可能是担心有一天Oracle会闭源MySQL。
环境搭建
-
DockerHubMySQL 镜像库地址上查看可用的MySQL版本
-
拉取镜像
[root@localhost mysql]# docker pull mysql:8.0 8.0: Pulling from library/mysql 33847f680f63: Already exists 5cb67864e624: Already exists 1a2b594783f5: Already exists b30e406dd925: Already exists 48901e306e4c: Already exists 603d2b7147fd: Already exists 802aa684c1c4: Already exists 715d3c143a06: Pull complete 6978e1b7a511: Pull complete f0d78b0ac1be: Pull complete 35a94d251ed1: Pull complete 36f75719b1a9: Pull complete Digest: sha256:8b928a5117cf5c2238c7a09cd28c2e801ac98f91c3f8203a8938ae51f14700fd Status: Downloaded newer image for mysql:8.0 docker.io/library/mysql:8.0 [root@localhost mysql]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE mysql 8.0 c60d96bd2b77 3 weeks ago 514MB
-
创建并运行容器
mkdir -p /root/mysql/conf /root/mysql/data touch /root/mysql/conf/my.cnf docker run -itd --name mysql_dev \ -v /root/mysql/conf/my.cnf:/etc/my.cnf \ -v /root/mysql/log:/var/log/mysql \ -v /root/mysql/data:/var/lib/mysql \ -p 3306:3306 -e MYSQL_ROOT_PASSWORD=222222 \ mysql:8.0 30ced94ae92344e9d498c5397d99ed152152374e3ea73fda166368082c744db3 CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 30ced94ae923 mysql:8.0 "docker-entrypoint.s…" About a minute ago Up About a minute 0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp mysql_dev
-
Windows上使用Navicat连接数据库
这台虚拟机的IP地址是 192.168.56.104,来试着连一下,如果崩了就看看ip地址对不对,主机能不能ping通虚拟机。。。😐
由于前面设置了端口映射(将虚拟机的3306端口映射到docker容器的3306端口),所以这里就就连3306端口可以了。
OK连接成功。😇
如果没有连接上的话,可能是Mysql 8+版本多了身份验证等。
参考这位大佬博客:https://blog.csdn.net/wd2014610/article/details/89023562
use mysql;
update user set host='%' where user ='root';
FLUSH PRIVILEGES;
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '******';
FLUSH PRIVILEGES;