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
如果没有跳出报错信息,说明初始化成功。此时,在数据目录可以看到已经生成了相应的文件。
3 配置systemd系统管理mysqld服务
1)创建systemd服务配置文件:
[mysql@mysql ~]$ sudo vim /usr/lib/systemd/system/mysqld.service
添加:
[Unit]
Description=MySQL Server
Documentation=man:mysqld(8)
Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
After=network-online.target
After=syslog.target
[Install]
WantedBy=multi-user.target
[Service]
User=mysql
Group=mysql
Type=notify
# Disable service start and stop timeout logic of systemd for mysqld service.
TimeoutSec=0
# Start main service
ExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf $MYSQLD_OPTS
# Use this to switch malloc implementation
EnvironmentFile=-/etc/sysconfig/mysql
# Sets open_files_limit
LimitNOFILE = 65536
Restart=on-failure
RestartPreventExitStatus=1
# Set enviroment variable MYSQLD_PARENT_PID. This is required for restart.
Environment=MYSQLD_PARENT_PID=1
PrivateTmp=false
2)配置生效
[mysql@mysql ~]$ sudo systemctl daemon-reload
4 启动实例
使用systemd管理mysqld服务:
[mysql@mysql ~]$ sudo systemctl start mysqld
[mysql@mysql ~]$ sudo systemctl status mysqld
关闭服务使用sudo systemctl stop mysqld
5 登录
查看临时密码:
[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.';