本文档讲解安装版本为mysql-5.7.29,对于5.7.29之后的版本,不适用此说明文档,主要原因在于之后版本的mysql配置文件的目录位置和结构有所改变,使用此说明可能会出现找不到配置文件或者配置后不生效的情况。
安装过程中务必保证文件路径的前后统一,否则可能会导致不可预期的结果,推荐直接使用文中的命令进行操作。
linux系统版本: CentOS 7.7 64位
安装源文件版本:mysql-5.7.29-linux-glibc2.12-x86_64.tar.gz
mysql安装位置:/usr/local/mysql/
数据库文件数据位置:/usr/local/mysql/data
一、安装前准备
1、检查是否已经安装过mysql,执行命令
root@localhost /# rpm -qa | grep mysql
从执行结果,可以看出我们已经安装了 mysql-libs-5.1.73-5.el6_6.x86_64 ,执行删除命令
root@localhost /# rpm -e --nodeps mysql-libs-5.1.73-5.el6_6.x86_64
再次执行查询命令,查看是否删除
root@localhost /# rpm -qa | grep mysql
2、查询所有Mysql对应的文件夹
root@localhost /# whereis mysql
mysql: /usr/bin/mysql /usr/include/mysql
root@localhost lib# find / -name mysql
/data/mysql
/data/mysql/mysql
删除相关目录或文件
root@localhost /# rm -rf /usr/bin/mysql /usr/include/mysql /data/mysql /data/mysql/mysql
验证是否删除完毕
root@localhost /# whereis mysql
mysql:
root@localhost /# find / -name mysql
root@localhost /#
3、检查mysql用户组和用户是否存在,如果没有,则创建
root@localhost /# cat /etc/group | grep mysql
root@localhost /# cat /etc/passwd |grep mysql
root@localhost /# groupadd mysql
root@localhost /# useradd -r -g mysql mysql
root@localhost /#
4、从官网下载是用于Linux的Mysql安装包
下载命令:
root@localhost /# wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.29-linux-glibc2.12-x86_64.tar.gz
也可以直接到mysql官网选择其他版本进行下载。
二、安装Mysql
1、在执行 wget 命令的目录下或你的上传目录下找到Mysql安装包: mysql-5.7.29-linux-glibc2.12-x86_64.tar.gz
执行解压命令:
代码语言:txt复制[root@localhost /]# tar xzvf mysql-5.7.29-linux-glibc2.12-x86_64.tar.gz
代码语言:txt复制[root@localhost /]# ls
代码语言:txt复制mysql-5.7.29-linux-glibc2.12-x86_64
代码语言:txt复制mysql-5.7.29-linux-glibc2.12-x86_64.tar.gz
解压完成后,可以看到当前目录下多了一个解压文件,移动该文件到 /usr/local/ 下,并将文件夹名称修改为 mysql 。
如果 /usr/local/ 下已经存在 mysql ,请将已存在mysql文件修改为其他名称,否则后续步骤可能无法正确进行。
执行命令如下:
代码语言:txt复制[root@localhost /]# mv mysql-5.7.29-linux-glibc2.12-x86_64 /usr/local/
[root@localhost /]# cd /usr/local/
[root@localhost /]# mv mysql-5.7.29-linux-glibc2.12-x86_64 mysql
如果 /usr/local/ 下不存在 mysql 文件夹,直接执行如下命令,也可达到上述效果。
代码语言:txt复制[root@localhost /]# mv mysql-5.7.29-linux-glibc2.12-x86_64
/usr/local/mysql
2、在 /usr/local/mysql 目录下创建data目录
代码语言:txt复制[root@localhost /]# mkdir /usr/local/mysql/data
3、更改mysql目录下所有的目录及文件夹所属的用户组和用户,以及权限
代码语言:txt复制[root@localhost /]# chown -R mysql:mysql /usr/local/mysql
[root@localhost /]# chmod -R 755 /usr/local/mysql
4、编译安装并初始化mysql
代码语言:txt复制[root@localhost /]# cd /usr/local/mysql/bin
[root@localhost bin]# ./mysqld --initialize --user=mysql --datadir=/usr/local/mysql/data --basedir=/usr/local/mysql
*补充说明**
第4步时,可能会出现错误:找不到datadir和basedir路径。
出现该问题请跳到第6步,修改my.cnf文件的datadir和basedir。
第4步时,可能会出现错误:
出现该问题首先检查该链接库文件有没有安装
root@localhost bin# rpm -qa|grep libaio
root@localhost bin#
运行命令后发现系统中无该链接库文件,那就安装下
root@localhost bin# yum search libaio
root@localhost bin# yum install libaio-devel.x86_64
安装成功后,继续运行数据库的初始化命令,此时可能会出现如下错误,是因为libnuma安装的是32位,我们这里需要64位的
执行如下命令后可以解决:
root@localhost bin# yum -y install numactl.x86_64
执行无误之后,再重新执行第4步初始化命令,无误之后再进行第5步操作!
5、运行初始化命令成功后,输出日志如下:
注意:mysql 5.7.29版本执行初始化命令后不会打印日志,查看日志可到/usr/local/mysql/data/mysqld.log
记录日志最末尾位置 root@localhost: 后的字符串,此字符串为mysql管理员临时登录密码。
6、编辑配置文件my.cnf,在mysqld下添加datadir和basedir这两行:
datadir=/usr/local/mysql-5.7.29/data
basedir=/usr/local/mysql-5.7.29
7、启动mysql服务器
root@localhost /# /usr/local/mysql/support-files/mysql.server start
显示如下结果,说明数据库安装成功
如果出现如下提示信息
查看是否存在mysql和mysqld的服务,如果存在,则结束进程,再重新执行启动命令
8、添加软连接,并重启mysql服务
root@localhost /# ln -s /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
root@localhost /# ln -s /usr/local/mysql/bin/mysql /usr/bin/mysql
root@localhost /# /usr/local/mysql/support-files/mysql.server restart
9、登录mysql,重置密码
重置密码的第一步要跳过mysql的密码认证过程,方法如下
vim /etc/my.cnf (注:windows下修改的是my.ini)
在mysqld后面任意一行添加“skip-grant-tables”用来跳过密码验证的过程。
然后重启mysql
root@localhost /# /usr/local/mysql/support-files/mysql.server restart
敲入 mysql -u root -p
命令然后回车,当需要输入密码时,直接按enter键,便可以不用密码登录到数据库当中
root@localhost /# mysql -u root -p
Enter password:
mysql>set password for root@localhost = password('yourpass');
注意:如果在执行该步骤的时候出现 `ERROR 1290 (HY000): The MySQL server
is running with the --skip-grant-tables option so it cannot execute this
statement错误。则执行下
flush privileges` 命令,再执行该命令即可。
最后,把my.cnf中添加的“skip-grant-tables”去掉,再次登录mysql时就可使用设置的新密码了。
10、开放远程连接
mysql>use mysql;
msyql>update user set user.Host='%' where user.User='root';
mysql>flush privileges;
11、添加系统路径
vim /etc/profile
添加:
export PATH=/usr/local/mysql/bin:$PATH
source /etc/profile
12、设置开机自动启动