MySQL是最流行的开源SQL数据库管理系统,它由MySQL AB开发、发布和支持。是一个快速的、多线程、多用户和健壮的SQL数据库服务器。MySQL服务器支持关键任务、重负载生产系统的使用,也可以将它嵌入到一个大配置(mass-deployed)的软件中去。其官网地址如下:MySQL官网
MySQL是一个典型的关系型数据库,
(1)数据结构化存储在二维表中。
(2)支持事务的原子性 A,一致性 C,隔离性 I,持久性 D 特性。
(3)支持使用SQL语言对存储在其中的数据进行操作。
MySQL有两种安装方式:源码包安装,二进制包安装。这几种方式各有特色:二位制包安装不需编译,针对不同的平台有经过优化编译的不同的二进制文件以及包格式,安装简单方便;源码包则必须先配置编译再安装,可以根据你所用的主机环境进行优化,选择最佳的配置值,安装定制更灵活。
二进制包又分针对不同Linux的RPM包和通用二进制包安装。下面都分别进行讲解:
1 通用二进制版本安装
1.1 版本下载
首先登录如下地址:https://downloads.mysql.com/,按照下图所示下载安装包。
i二进制包下载
1.2 安装前准备工作
1.2.1 检查卸载以前版本(RPM安装包卸载)
检查MySQL及相关RPM包,是否安装,如果有安装,则移除相关文件及配置文件。
# 检查并删除安装的rpm包
rpm -qa | grep -i mysql
yum -y remove 包名 或者 rpm -e 包名 --nodeps (nodeps为不考虑依赖,根据情况确定是否添加)
rpm -e mysql57-community-release-el7-9.noarch
rpm -e mysql-community-server-5.7.17-1.el7.x86_64
rpm -e mysql-community-libs-5.7.17-1.el7.x86_64
rpm -e mysql-community-libs-compat-5.7.17-1.el7.x86_64
rpm -e mysql-community-common-5.7.17-1.el7.x86_64
rpm -e mysql-community-client-5.7.17-1.el7.x86_64
# 删除老版本mysql的开发头文件和库
rm -fr /usr/lib/mysql
rm -fr /usr/include/mysql
# 卸载后/var/lib/mysql中的数据及/etc/my.cnf不会删除,如果确定没用后就手工删除
rm -f /etc/my.cnf
rm -fr /var/lib/mysql
# 清除剩余
whereis mysql
mysql: /usr/bin/mysql /usr/lib64/mysql /usr/local/mysql /usr/share/mysql /usr/share/man/man1/mysql.1.gz
# 删除上面的文件夹
# 删除配置
rm -rf /usr/my.cnf
rm -rf /root/.mysql_sercret
# 剩余配置检查
chkconfig --list | grep -i mysql
chkconfig --del mysqld
# 根据上面的列表,删除 ,如:mysqld
1.2.2 linux依赖安装
yum search libaio # search for info
yum install libaio # install library
1.2.3 创建mysql用户和用户组
mysql用户不做登录,只用于权限控制
groupadd mysql
useradd -r -g mysql -s /bin/false mysql
1.2.4 解压二进制文件并配置环境变量
cd /usr/local
tar xvf /root/mysql-8.0.23-linux-glibc2.12-x86_64.tar.xz
ln -s mysql-8.0.23-linux-glibc2.12-x86_64/ mysql
# 修改/etc/profile并配置环境变量
vi /etc/profile #在文件最后,添加 export PATH=$PATH:/usr/local/mysql/bin。退出保存
source /etc/profile
1.2.5 创建数据文件夹
cd /usr/local/mysql
mkdir /data/mysql
ln -s /data/mysql data
chown mysql:mysql data
chmod 750 data
1.3 安装
1.3.1 初始化数据目录
使用mysqld加参数的方式,进行数据库初始化,如:bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/。
[root@VM-0-7-centos bin]# ./mysqld --initialize --user=mysql
2021-02-09T05:16:45.700203Z 0 [Warning] [MY-011070] [Server] 'Disabling symbolic links using --skip-symbolic-links (or equivalent) is the default. Consider not using this option as it' is deprecated and will be removed in a future release.
2021-02-09T05:16:45.700373Z 0 [System] [MY-013169] [Server] /usr/local/mysql-8.0.23-linux-glibc2.12-x86_64/bin/mysqld (mysqld 8.0.23) initializing of server in progress as process 17629
2021-02-09T05:16:45.777940Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started.
2021-02-09T05:16:49.185193Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended.
2021-02-09T05:16:53.428224Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: DG_Rgwa!9u>_
[root@VM-0-7-centos bin]#
参数说明
--initialize
生成root密码,但是是过期的,第一次登陆时需要修改。登录命令:mysql -u root -p 登录时输入密码,而密码在初始化的过程中在日志中查询,上述日志中如DG_Rgwa!9u>_,并修改密码。
--initialize-insecure
不生成root密码,登录时使用命令:mysql -u root --skip-password 跳过密码登录,并在登录后立即修改密码: ALTER USER 'root'@'localhost' IDENTIFIED BY &#