1 二进制包安装介绍
二进制包是经过源码编译后,解压即可用的安装包。相比于rpm包和源码包,官方更推荐在生产环境中使用二进制包安装,因为相对于rpm包安装路径可控,且比源码包安装过程简单,功能性、性能和安全都有优势。
如果想快速搭建实验环境的,也可以使用rpm包进行部署,参考文章:https://www.modb.pro/db/1735710200849047552
2 安装过程
一、下载二进制包
下载路径:https://downloads.mysql.com/archives/community/
安装手册:https://dev.mysql.com/doc/refman/8.0/en/binary-installation.html
下下来上传到/tmp中。
二、删除自带的配置文件
centos和redhat上一般已经安装有mariadb-libs包和/my.cnf配置文件,安装MySQL数据库前一定要删除,以免和新安装的MySQL造成冲突。
检查默认配置文件是否存在:
[root@mysql ~]# ll /etc/my.cnf
-rw-r--r--. 1 root root 570 Oct 1 2020 /etc/my.cnf
再检查是否有MySQL或者MariaDB的安装包:
[root@mysql ~]# rpm -qa | grep -i mysql
[root@mysql ~]# rpm -qa | grep -i mariadb
mariadb-libs-5.5.68-1.el7.x86_64
删除这些文件:
[root@mysql001 ~]# rpm -e mariadb-libs
[root@mysql001 ~]# ll /etc/my.cnf
ls: cannot access /etc/my.cnf: No such file or directory
删除mariadb-libs后,/etc/my.cnf也会被一并删除。
注意:如果报依赖错误,使用下面的命令删除:
[root@mysql ~]# rpm -e mariadb-libs
error: Failed dependencies:
libmysqlclient.so.18()(64bit) is needed by (installed) postfix-2:2.10.1-9.el7.x86_64
libmysqlclient.so.18(libmysqlclient_18)(64bit) is needed by (installed) postfix-2:2.10.1-9.el7.x86_64
[root@mysql ~]# rpm -e --nodeps mariadb-libs-5.5.68-1.el7.x86_64
[root@mysql ~]# rpm -qa | grep -i mariadb
卸载mariadb-libs后,my.cnf也会被一并删除。
三、创建用户和组
[root@mysql ~]# groupadd mysql
[root@mysql ~]# useradd -g mysql mysql
[root@mysql ~]# passwd mysql
四、解压二进制包
[root@mysql ~]# cd /usr/local
[root@mysql local]# tar xvf /tmp/mysql-8.0.25-linux-glibc2.12-x86_64.tar.xz
[root@mysql local]# ln -s mysql-8.0.25-linux-glibc2.12-x86_64 mysql
五、编辑配置文件
[root@mysql local]# vim /etc/my.cnf
添加以下基础的配置文件:
[mysqld]
basedir=/usr/local/mysql
datadir=/data/mysql/3306/data
user=mysql
port=3306
socket=/data/mysql/3306/data/mysql.sock
log_error=/data/mysql/3306/data/mysqld.err
[client]
socket=/data/mysql/3306/data/mysql.sock
六、创建数据目录
[root@mysql local]# mkdir -p /data/mysql/3306/data
[root@mysql data]# chown -R mysql.mysql /data
七、添加环境变量
[root@mysql mysql]# vim /etc/profile
在最后追加:
export MYSQL_HOME=/usr/local/mysql
export PATH=$PATH:$HOME/bin:$MYSQL_HOME/bin
生效:
[root@mysql mysql]# source /etc/profile
八、初始化实例
切换到mysql用户:
[root@mysql mysql]# su - mysql
执行初始化:
[mysql@mysql ~]$ mysqld --defaults-file=/etc/my.cnf --initialize
如果没有跳出报错信息,说明初始化成功。此时,在数据目录可以看到已经生成了相应的文件。
九、启动实例
[mysql@mysql ~]$ mysql_ssl_rsa_setup
[mysql@mysql bin]$ mysqld_safe --user=mysql &
[1] 6989
[mysql@mysql bin]$ 2024-01-21T17:50:13.640819Z mysqld_safe Logging to '/data/mysql/3306/data/mysqld.err'.
2024-01-21T17:50:13.719308Z mysqld_safe Starting mysqld daemon with databases from /data/mysql/3306/data
[mysql@mysql bin]$
[mysql@mysql bin]$ ps -ef | grep mysqld
root 6831 5394 0 01:47 pts/1 00:00:00 tailf mysqld.err
mysql 6989 5070 0 01:50 pts/0 00:00:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --user=mysql
mysql 7144 6989 1 01:50 pts/0 00:00:02 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/data/mysql/3306/data --plugin-dir=/usr/local/mysql/lib/plugin --log-error=/data/mysql/3306/data/mysqld.err --pid-file=mysql.pid --socket=/data/mysql/3306/data/mysql.sock --port=3306
mysql 7303 5070 0 01:52 pts/0 00:00:00 grep --color=auto mysqld
十、登录
查看临时密码:
[mysql@mysql bin]$ grep "temporary password" /data/mysql/3306/data/mysqld.err
2024-01-21T17:45:29.080672Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: H#Nva+9w(&tp
登录,并修改密码:
[mysql@mysql bin]$ mysql -uroot -p'H#Nva+9w(&tp'
mysql> alter user user() identified by 'Mysql123.';