阿里云腾讯云服务器部署安装 Mysql5.7.20 【三部曲之一】

时间:2023-01-27 18:39:13

1 前言

最近在部署系统环境,主要安装 mysql、tomcat、jdk、redis、nginx。踩了很多坑,现在形成文档,避免以后浪费时间,这篇是 mysql 的安装。

2 安装

2.1 Mysql5.7.20

为什么要强调版本呢,因为不同的版本,碰到的情况不一样,从5.7.18开始,mysql 虽然也会生成 my.cnf 配置文件,但是和以前的 default.cnf 不一样,不仅位置还有内容。
本来准备将资源上传到 CSDN 的,但是文件太大,限制了。所以自行安装包自行解决吧。我使用的是 .tar.gz 式安装包。

2.1.1 卸载自带的 Mysql 。一般没有,但是检查下最好

rpm -qa | grep mysql

如果搜到了,假设搜到的叫做 mysql-xxx-xx,然后卸载它(替换自己的名字)。如果没有搜到,不用管了。

rpm -e --nodeps mysql-xxx-xx


2.1.2 解压到 local 下。 因为是以 .gz 结尾。不用新建 mysql 文件夹,直接解压

tar -xvf mysql-5.7.20-linux-glibc2.5-i686.tar.gz -C /usr/local

注意替换自己安装包名字


2.1.3 修改mysql文件夹名字

mv mysql-xxx mysql


2.1.4 创建用户组mysql,创建用户mysql并将其添加到用户组mysql中,并赋予读写权限

groupadd mysql

useradd -r -g mysql mysql

chown -R mysql mysql/

chgrp -R mysql mysql/


2.1.5 配置文件 my.cnf ,这是重点。可以去 etc 下找找是否存在 my.cnf 如果不存在自己新建一个,如果存在里面应该会有一些内容,但是配置内容并不是我们熟悉或者希望的,所以将以前的内容注释,然后添加我们自己的

vim /etc/my.cnf

如果本身存在,打开就会有内容,如果不存在,执行如上命令就会生成一个文件。如果存在内容,将内容删除,然后添加如下内容,如果不存在,直接添加。然后保存退出。

[client]
port = 3306
socket = /tmp/mysql.sock

[mysqld]
#datadir=/var/lib/mysql
#socket=/var/lib/mysql/mysql.sock
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
# Settings user and group are ignored when systemd is used.
# If you need to run mysqld under a different user or group,
# customize your systemd unit file for mariadb according to the
# instructions in http://fedoraproject.org/wiki/Systemd

[mysqld_safe]
#log-error=/var/log/mariadb/mariadb.log
#pid-file=/var/run/mariadb/mariadb.pid

#
# include all files from the config directory
#
#!includedir /etc/my.cnf.d

character_set_server=utf8
init_connect='SET NAMES utf8'
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
socket=/tmp/mysql.sock
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
#不区分大小写
lower_case_table_names = 1

sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

max_connections=5000

default-time_zone = '+8:00'

注意前面的注释,其实就是把以前如果存在的内容注释,将自己的配置内容添加,看好注释内容


2.1.6 初始化数据库
这一步坑比较多

yum install libaio

cd /var/log/
vim mysqld.log
chmod 777 mysqld.log
chown mysql:mysql mysqld.log

/usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --lc_messages_dir=/usr/local/mysql/share --lc_messages=en_US

这一步可能会报错如下

error while loading shared libraries: libnuma.so.1: cannot open shared object file: No such file or directory

这是因为前面

yum 安装的libnuma.so.1,但安装时默认安装的是32的,但db2需要的是64位的

所以我们需要先卸载libnuma.so.1 再安装

yum remove libnuma.so.1

yum -y install numactl.x86_64

这里安装完成后,在运行如上语句

/usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --lc_messages_dir=/usr/local/mysql/share --lc_messages=en_US


2.1.7 建立 my.cnf 配置文件中配置的 mysqld.pid 文件

cd /var/run/

mkdir mysqld

chmod 777 mysqld

cd mysqld

vim mysqld.pid

chmod 777 mysqld.pid

chown mysql:mysql mysqld.pid 


2.1.8 查看密码 运行服务端 mysql service 登录mysql

查看密码
cat /var/log/mysqld.log

启动服务端
/usr/local/mysql/support-files/mysql.server start

登录
/usr/local/mysql/bin/mysql -uroot -p
输入密码

如果出现 -bash: mysql: command not found 错误,一般是由于安装了一键安装脚本后没有对命令做链接,使用

ln -s /usr/local/mysql/bin/mysql /usr/bin/mysql

然后就可以使用mysql命令了。

2.1.9 修改初始密码

set password=password('新密码');
flush privileges;

特别注意上述命令是进入 mysql 后才能执行


2.2.0 将 mysql 服务添加到开机自启

cd /usr/local/mysql/support-files

cp mysql.server /etc/init.d/mysqld

chkconfig --add mysqld


2.2.1 使用service mysqld命令启动/停止服务

service mysqld start/stop/restart 


2.2.2 为了避免每次都输入mysql的全路径/usr/local/mysql/bin/mysql,可将其加入环境变量中,在/etc/profile最后加入两行命令

vim /etc/profile

export PATH=/usr/local/mysql/bin:$PATH

source /etc/profile

这样就可以在shell中直接输入mysql命令来启动客户端程序了

mysql -uroot -p


2.2.3 设定远程登录mysql
在Linux下为了安全,默认是不允许mysql本机以外的机器访问mysql数据库服务,因此需要重新授权root。方便远程访问。
mysql> use mysql;

Reading table information for completion of table and column names

You can turn off this feature to get a quicker startup with -A

Database changed

mysql> select Host,User from user;

+———–+———–+

| Host | User |

+———–+———–+

| % | root |

| localhost | mysql.sys |

| localhost | root |

+———–+———–+

3 rows in set (0.00 sec)

mysql> GRANT ALL PRIVILEGES ON . TO root@’%’ identified by ‘000000’;

Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> flush privileges;

Query OK, 0 rows affected (0.00 sec)

授权语句最后的‘000000’是mysql数据库root用户的新密码。


ok,到这里差不多完成了,最后设置好 Mysql 的安全组,就可以在远程使用工具访问该数据库了