下载安装包
到MySQL的官方网站https://www.mysql.com/downloads/上下载完整的MySQL 8社区版RPM安装包,注意选择对应的平台和操作系统版本,这里选择的是红帽Linux,CPU架构是64位的x86。这个安装包里包括的RPM包如下:
代码语言:javascript复制$ tar tvf mysql-8.0.25-1.el7.x86_64.rpm-bundle.tar|awk '{print $6}'mysql-community-client-8.0.25-1.el7.x86_64.rpmmysql-community-client-plugins-8.0.25-1.el7.x86_64.rpmmysql-community-common-8.0.25-1.el7.x86_64.rpmmysql-community-devel-8.0.25-1.el7.x86_64.rpmmysql-community-embedded-compat-8.0.25-1.el7.x86_64.rpmmysql-community-libs-8.0.25-1.el7.x86_64.rpmmysql-community-libs-compat-8.0.25-1.el7.x86_64.rpmmysql-community-server-8.0.25-1.el7.x86_64.rpmmysql-community-test-8.0.25-1.el7.x86_64.rpm
这些包的命名规则是packagename-version-distribution-arch.rpm,其中:
(1)packagename代表包名。
(2)version代表版本号。
(3)distribution代表linux平台。
(4)arch代表CPU类型。
例如mysql-community-server-8.0.25-1.el7.x86_64.rpm这个RPM包,mysql-community-server是包名,8.0.25-1是版本号,el7中的el代表Enterprise Linux,包括Oracle Linux、Red Hat Enterprise Linux和CentOS,7是Linux的大版本号,x86_64是CPU的类型。
安装前先检查是否已经安装了MySQL或MariaDB
首先,检查默认的配置文件是否已经存在,命令如下:
代码语言:javascript复制$ ll /etc/my.cnf-rw-r--r--. 1 root root 570 Mar 6 2014 /etc/my.cnf
然后,检查是否有MySQL或MariaDB的安装包,命令如下:
代码语言:javascript复制$ rpm -qa|grep -i mysql$ rpm -qa|grep -i mariadbmariadb-libs-5.5.35-3.el7.x86_64
Red Hat和CentOS上通常已经安装了mariadb -libs的包,这个包需要卸载,特别是/etc/my.cnf文件,一定要先删除,如果不删除这个网站,新安装的MySQL会使用这个配置文件,届时会出现莫名其妙的错误。使用下面的命令卸载mariadb -libs包:
代码语言:javascript复制$ rpm -e mariadb-libs$ ll /etc/my.cnfls: cannot access /etc/my.cnf: No such file or directory
卸载了mariadb -libs的包后,/etc/my.cnf文件就一并被删除了。
安装RPM包
服务端大部分时候只需要安装下面5个包:
(1)mysql-community-server
(2)mysql-community-client
(3)mysql-community-libs
(4)mysql-community-common
(5)mysql-community-libs-compat
安装命令如下:
代码语言:javascript复制$ sudo yum install mysql-community-{server,client,common,libs}-*
客户端的安装命令如下:
代码语言:javascript复制$ sudo yum install mysql-community-{client,common,libs}-*
也可以把yum install替换成rpm -Uvh,但rpm -Uvh因为不能自动解决包的依赖关系的问题而更容易出错。
初始化数据库
安装完成后,先不要启动MySQL数据库,因为MySQL数据库在第一次启动时会自动进行初始化,在初始化之前要根据自己的需求对相关系统参数进行修改(默认的参数文件是/etc/my.cnf):
(1)最有可能修改的系统参数是数据文件目录datadir,这个系统参数的默认值是“/var/lib/mysql”,它通常在本地硬盘,在生产环境中通常是不合适的,可以把它改成其他实际生产中用到的目录,例如“/disk1/data”。
(2)系统参数innodb_log_file_size指定InnoDB的重做日志文件的大小,默认值是50M,对于生产环境通常也小了,第16章会说明如何计算这个系统参数的大小,这里可以把它设置成100M。
(3)系统参数innodb_data_home_dir指定InnoDB系统表空间的目录,默认值是datadir,如果有必要,也可以调整这个系统参数。
(4)系统参数innodb_log_group_home_dir指定InnoDB的重做日志文件的目录,默认值也是datadir,如果有必要,也可以调整这个系统参数。
参数文件准备好后,启动mysqld服务,命令如下:
代码语言:javascript复制$ sudo systemctl start mysqld
启动过程中会自动进行数据库的初始化工作,在初始化过程中会自动为超级用户root@localhost生成一个密码,可以在MySQL的错误日志里查询自动生成的密码,命令如下:
代码语言:javascript复制$ sudo grep 'temporary password' /var/log/mysqld.log2020-12-22T08:08:27.273629Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: otvx.-q92,/N[
使用初始密码登录MySQL数据库并修改密码,这里需要注意,如果密码里面有特殊字符,密码应用单引号或双引号括起来,命令如下:
代码语言:javascript复制$ sudo mysql -uroot -p’otvx.-q92,/N’mysql: [Warning] Using a password on the command line interface can be insecure.Welcome to the MySQL monitor. Commands end with ; or g.Your MySQL connection id is 8Server version: 8.0.25......
登录后,可以使用set password的命令修改密码:
代码语言:javascript复制mysql> set password='Dnihaha123!';
修改完成后使用新的密码重新登录,命令如下:
代码语言:javascript复制$ sudo mysql -uroot -pDnihaha123!