CentOS7下安装MySQL8.0.23

一、卸载mariadb

安装mysql的话会和mariadb的文件冲突,所以需要先卸载掉mariadb。由于确定使用mysql,那只有卸载mariadb了。

centos7 已经不支持mysql,内部集成了mariadb

[root@VM-0-14-centos ~]# rpm -qa | grep mariadb
mariadb-libs-5.5.68-1.el7.x86_64
[root@VM-0-14-centos ~]# rpm -e --nodeps  mariadb-libs-5.5.68-1.el7.x86_64

二、下载Mysql

首先,从 MySQL 官网下载最新版本的 MySQL Community Server。MySQL Community Server 是社区版本的 MySQL 服务端,可以免费使用。这里我选择使用 tar.gz 的方式进行安装,所以需要下载对应的 tar.gz 安装包,如下图红框所示:在这里插入图片描述

小贴士:使用迅雷下载可大幅提高下载速度

三、上传到服务器安装Mysql(安装目录/home/mysql)

[root@VM-0-14-centos mysql]# tar -zxf mysql-8.0.23-el7-x86_64.tar.gz    #解压
[root@VM-0-14-centos mysql]# cd mysql-8.0.23-el7-x86_64/support-files/
[root@VM-0-14-centos support-files]# chmod -R 777 /home/mysql
[root@VM-0-14-centos support-files]# vim mysql.server
basedir=/home/mysql/mysql-8.0.23-el7-x86_64
datadir=/home/mysql/mysql-8.0.23-el7-x86_64/data
[root@VM-0-14-centos support-files]# cd ../bin/
[root@VM-0-14-centos bin]# ./mysqld --initialize
./mysqld: error while loading shared libraries: libnuma.so.1: cannot open shared object file: No such file or directory

腾讯云服务器安装mysql缺少依赖,可执行yum -y install numactl下载相应依赖包

[root@VM-0-14-centos bin]# ./mysqld --initialize 
2021-02-18T15:21:37.383447Z 0 [System] [MY-013169] [Server] /home/mysql/mysql-8.0.23-el7-x86_64/bin/mysqld (mysqld 8.0.23) initializing of server in progress as process 2814
2021-02-18T15:21:37.584514Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started.
2021-02-18T15:21:39.159116Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended.
2021-02-18T15:21:41.610843Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: 9eGyCYOrY*<B

四、启动Mysql

cd ../support-files/
./mysql.server start

五、开启远程连接

参考文章: mysql8 设置允许远程连接

六、Docker安装MySQL8.0.23

拉取镜像
默认拉取最新版本的镜像

$ docker pull mysql
如果要指定版本,使用下面的命令

$ docker pull mysql:8.0.23
创建数据目录和配置文件
在宿主机创建放置mysql的配置文件的目录和数据目录,并且进行授权

$ mkdir -p /usr/mysql/conf /usr/mysql/data

$ chmod -R 755 /usr/mysql/
创建配置文件
在上面创建的配置文件目录/usr/mysql/conf下创建MySQL的配置文件my.cnf

$ vim /usr/mysql/conf/my.cnf
添加以下内容到上述创建的配置文件中

[client]

#socket = /usr/mysql/mysqld.sock

default-character-set = utf8mb4

[mysqld]

#pid-file   = /var/run/mysqld/mysqld.pid

#socket   = /var/run/mysqld/mysqld.sock

#datadir = /var/lib/mysql

#socket = /usr/mysql/mysqld.sock

#pid-file = /usr/mysql/mysqld.pid

datadir = /usr/mysql/data

character_set_server = utf8mb4

collation_server = utf8mb4_bin

secure-file-priv= NULL

# Disabling symbolic-links is recommended to prevent assorted security risks

symbolic-links=0

# Custom config should go here

!includedir /etc/mysql/conf.d/

启动创建容器
$ docker run --restart=unless-stopped -d --name mysql -v /usr/mysql/conf/my.cnf:/etc/mysql/my.cnf -v
/usr/mysql/data:/var/lib/mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:8.0.23
参数解释:
-v : 挂载宿主机目录和 docker容器中的目录,前面是宿主机目录,后面是容器内部目录

-d : 后台运行容器

-p 映射容器端口号和宿主机端口号

-e 环境参数,MYSQL_ROOT_PASSWORD设置root用户的密码

执行上述命令后,执行查询容器的命令就可以看到创建的mysql容器

$ docker ps -a
结果如下所示:

问题
上述虽然安装好了mysql,但是使用远程的Navicat连接时提示错误,不能正确连接mysql,此时需要修改按照下面说的步骤修改一下mysql的密码模式以及主机等内容才可以。

修改mysql密码以及可访问主机
进入容器内部
$ docker exec -it mysql /bin/bash
连接mysql
$ mysql -uroot -p
使用mysql库
$ mysql> use mysql
修改访问主机以及密码等,设置为所有主机可访问

mysql> ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456' ;
#刷新
$ mysql> flush privileges;

注意:
mysql_native_password,mysql8.x版本必须使用这种模式,否则navicate无法正确连接
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/luomo0203/article/details/113854964