Centos7安装Mysql5.7笔记

前言

公司重装服务器后需要配置环境,我被分配到了安装Mysql。公司服务器是Centos7,要求使用源码方式安装Mysql5.7.17,Mysql需要安装在指定目录下。之前我有在macbook上安装过Mysql,或者使用docker的方式安装Mysql,都没碰到过什么问题。因为路径设置我都是默认的,而这次通过二进制文件的方式安装Mysql需要指定路径,安装过程中碰到些许问题,这里记录一下。

安装过程

解压Mysql安装包

我本次安装的二进制文件安装包已经在服务器上了,就不需要下载了。二进制文件存放目录为/zndata/server,Mysql数据存放目录为/zndata/data/mysql

cd /zndata/server

/zndata/server下新建目录mysql,把二进制文件移动到mysql目录,解压

1
2
3
4
5
mkdir mysql
mv mysql-5.7.17-linux-glibc2.5-x86_64.tar mysql
tar xvf mysql-5.7.17-linux-glibc2.5-x86_64.tar

解压后
会出现3个新文件,继续解压

tar -zxvf mysql-5.7.17-linux-glibc2.5-x86_64.tar.gz

重命名文件夹

mv mysql-5.7.17-linux-glibc2.5-x86_64 mysql-5.7.17

创建mysql组和用户

创建mysql组,账户,设置mysql不能登录

1
2
3
groupadd mysql
useradd -g mysql mysql
usermod -s /bin/false mysql

/zndata/server/mysql/zndata/data/mysql的所有权更变为mysql用户和用户组

1
2
3
4
cd /zndata/server
chown -R mysql:mysql mysql
cd /zndata/data
chown -R mysql:mysql mysql

安装和初始化数据库

1
2
3
4
5
6
7
8
9
10
11
cd /zndata/server/mysql/mysql-5.7.17
./bin/mysqld --initial --user=mysql --basedir=/zndata/server/mysql/mysql-5.7.17 --datadir=/zndata/data/mysql
rm -f /etc/my.cnf
cp -a ./support-files/my-default.cnf /etc/my.cnf
cp -a ./support-files/mysql.server /etc/init.d/mysqld
./bin/mysqld_safe --user=mysql --basedir=/zndata/server/mysql/mysql-5.7.17 --datadir=/zndata/data/mysql

配置my.cnf,编辑以下内容

1
2
3
4
5
6
vi /etc/my.cnf
basedir=/zndata/server/mysql/mysql-5.7.17
datadir=/zndata/data/mysql
port = 3306
socket=/zndata/server/mysql/mysql-5.7.17/mysql.sock

配置环境变量 添加如下内容

1
2
3
4
vi /etc/profile
export MYSQL_HOME="/zndata/server/mysql/mysql-5.7.17"
export PATH="$PATH:$MYSQL_HOME/bin"

使配置即时生效

./etc/profile

设置开机启动并启动mysql

1
2
3
chkconfig mysqld on
systemctl start mysqld

登录Mysql

mysql5.7在安装时会生成一个密码,可以在error.log中查看到,我这里error.log路径是在/zndata/data/mysql下。

输入mysql -uroot -p,输入error.log中查到的密码就登录成功。

添加远程访问权限

本地mysql登录成功后

1
2
3
4
5
6
7
use mysql;
update user set host = '%' where user = 'root';
exit
systemctl restart mysqld

设置防火墙,我这里直接将防火墙关闭了。

1
systemctl stop firewalld

做完以上步骤,就可远程连接到mysql了。

遇到的问题

初始化使用./bin/mysql_install_db报错

原因: mysql_install_db已经不再推荐使用了。

解决办法: 使用./bin/mysqld --initial来完成初始化。

Mysql启动报错The server quit without updating PID file (/usr/local/var/mysql/xxx.local.pid).,需要进入bin目录运行./mysqld_safe后才能成功启动

原因: mysqld_safe没有配置正确,查看error.log日志会显示mysqld_safe Starting mysqld daemon with databases from /usr/local/mysql

解决办法: 建立软链接

1
ln -s /zndata/data/mysql/mysql-5.7.17/bin/mysqld_safe /usr/local/mysql

登录Mysql报Can't connect to local MySQL server through socket '/tmp/mysql.sock'

原因:初始化mysql时my.cnf中mysql.sock默认在/tmp下。

解决办法:建立软链接

1
ln -s /zndata/data/mysql/mysql-5.7.17/mysql.sock /tmp/mysql.sock

结束语

这次安装Mysql中又温习了下Linux的命令,比如创建用户和组,切换用户,解压等命令,还新学习到了软链接,并用软链接的方式解决了安装Mysql过程中的两处问题,收获还是蛮大的,继续努力!