1. 检测系统是否有自带MySQL
1
2
3
4
5
6
7
| #检查是否安装过MySQL
rpm -qa | grep mysql
#检查是否存在Mariadb数据库(内置的MySQL数据库),有则强制删除
rpm -qa | grep mariadb
#强制删除
rpm -e --nodeps mariadb-libs-5.5.68-1.el7.x86_64
rpm -e --nodeps mariadb-5.5.68-1.el7.x86_64
|
2. 文件上传到Linux服务器后进行解压
1
2
3
4
5
6
| # 本次安装目录为/data/database
mkdir -p /data/database
# 解压MySQl安装包
tar -zxvf mysql-5.7.17-linux-glibc2.5-x86_64.tar.gz
# MySQL安装包名字太长,为了方便输入,我们更改一下文件夹的名字
mv mysql-5.7.17-linux-glibc2.5-x86_64/ mysql-5.7.17
|
3. 创建mysql用户组和mysql用户
1
2
3
4
5
6
| # 创建mysql用户组
groupadd mysql
# 创建mysql用户并放入mysql用户组
useradd -g mysql mysql
# 设置mysql密码
passwd mysql
|
4. 建立必要的目录
1
2
3
4
5
6
7
8
| # 数据存放目录
mkdir /data/database/mysql-5.7.17/data
# 日志目录和日志文件
mkdir /data/database/mysql-5.7.17/log
touch /data/database/mysql-5.7.17/log/mysqld.log
# pid目录和记录mysqld进程pid的文件
mkdir /data/database/mysql-5.7.17/pid
touch /data/database/mysql-5.7.17/pid/mysqld.pid
|
5. 更改所属的组和用户
1
| chown -R mysql:mysql /data/database/mysql-5.7.17
|
6. 在etc下新建配置文件my.cnf
从MySQL-3.X开始,MySQL的配置文件加载顺序最优先就是/etc/my.cnf
。
1
2
3
4
5
6
7
8
| # 查找my.cnf的位置
/data/database/mysql-5.7.17/bin/mysqld --verbose --help |grep -A 1 'Default options'
# MySQL寻找my.cnf的顺序为
/etc/my.cnf
/etc/mysql/my.cnf
/usr/local/mysql/etc/my.cnf
/home/mysql-5.7.17/my.cnf
~/.my.cnf
|
新建配置文件my.cnf。
1
2
3
| cd /etc
touch my.cnf
vi my.cnf
|
在my.cnf里输入以下配置信息。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
| [client]
default-character-set=utf8
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8
[mysqld]
skip-name-resolve
#设置3306端口
port = 3306
# 设置mysql的安装目录
basedir=/data/database/mysql-5.7.17
# 设置mysql数据库的数据的存放目录
datadir=/data/database/mysql-5.7.17/data
# 允许最大连接数
max_connections=200
# 服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
# 设置忽略大小写
# lower_case_table_names=0 表名存储为给定的大小和比较是区分大小写的
# lower_case_table_names = 1 表名存储在磁盘是小写的,但是比较的时候是不区分大小写
# lower_case_table_names=2 表名存储为给定的大小写但是比较的时候是小写的
lower_case_table_names=1
max_allowed_packet=200M
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
# 定期清理日志
expire_logs_days=3
log-error=/data/database/mysql-5.7.17/log/mysqld.log
pid-file=/data/database/mysql-5.7.17/pid/mysqld.pid
|
7. 初始化数据库
有两种方式,在5.7.6之前初始化的方法是:
1
2
3
4
5
| cd /data/database/mysql-5.7.17/bin
./mysql_install_db \
--user=mysql \
--basedir=/data/database/mysql-5.7.17/ \
--datadir=/data/database/mysql-5.7.17/data/
|
5.7.6之后的版本初始化数据库不再使用mysql_install_db:
1
2
3
4
5
6
7
8
9
10
11
| cd /data/database/mysql-5.7.17/bin
./mysqld \
--user=mysql \
--basedir=/data/database/mysql-5.7.17 \
--datadir=/data/database/mysql-5.7.17/data \
--lower-case-table-names=1 \
--initialize
# --lower-case-table-names=1是因为my.cnf中,我们要开启表名大小写敏感
# 这个不能在后期设置,必须在安装阶段初始化时进行设置
# 否则my.cnf中不可以配置该属性,配置了库会启动失败。
|
如果出现如下图所示则为安装成功,红线部分为生成的默认密码:默认密码一定要记住,一会要用。默认密码在mysqld.log日志里,如果忘记了可以到日志里找。
初始化完成后把/etc/my.cnf
复制到/data/database/
下,然后删除/etc/my.cnf
,启动时加载/data/database/my.cnf
,防止损坏数据库。
8. 配置启动文件
1
2
3
| cp /data/database/mysql-5.7.17/support-files/mysql.server /etc/init.d/mysqld
# 或创建软链
ln -s /data/database/mysql-5.7.17/support-files/mysql.server /etc/init.d/mysql
|
9. 创建软链
mysqld_safe默认会从/usr/local/mysql/bin
目录中去寻找启动脚本mysqld,但是我安装mysql的目录是/data/database/mysql-5.7.17
,因此可以在/usr/local/mysql/bin/
目录下创建一个/home/mysql-5.7.17/bin/mysqld
的软链。
1
2
| mkdir -p /usr/local/mysql/bin
ln -s /data/database/mysql-5.7.17/bin/mysqld /usr/local/mysql/bin/mysqld
|
10. 配置启动脚本
startMySQL.sh
1
2
3
4
5
6
| #!/bin/sh
LANG=en_US.UTF-8
MYSQL_HOME=/data/database/mysql
PATH=$MYSQL_HOME/bin:$PATH
mysqld --defaults-file=/data/database/my.cnf &
|
stopMySQL.sh
1
2
3
4
5
6
7
8
9
10
11
| #!/bin/sh
LANG=en_US.UTF-8
MYSQL_HOME=/data/database/mysql
PATH=$MYSQL_HOME/bin:$PATH
mysqladmin --defaults-file=/data/database/my.cnf -uroot -p shutdown
echo '查询进程ID和端口监听,没有正常退出的话,自己kill吧!'
echo 'ps -ewf | grep mysqld'
ps -ewf | grep mysqld
echo 'netstat -na |grep 13306'
|
11. 配置环境变量
1
2
3
4
5
6
7
| su mysql
vi ~/.bash_profile
# 添加以下内容
export MYSQL_HOME=/data/database/mysql-5.7.17/
export PATH=$PATH:$MYSQL_HOME/bin
# 刷新环境变量
source ~/.bash_profile
|
关于环境变量
- etc目录下存放系统管理和配置文件 (系统配置)
/etc/profile
:为所有的用户设置系统范围的环境变量和启动顺序,当用户登录时读取该文件,该文件被执行并从/etc/profile.d目录的配置文件中搜集shell的设置,这个文件对每个shell都有效。
/etc/bashrc
:为每一个运行bash shell的用户执行此文件,当bash shell被打开时该文件被读取。也就是说,当用户shell执行了bash时,运行这个文件。
- 用户配置
~/.profile
:每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次。默认情况下,它设置一些环境变量,然后执行用户的.bashrc文件。
~/.bashrc
:该文件包含专用于某个用户的bash shell的bash信息,当该用户登录时以及每次打开新的shell时,该文件被读取。
~/.bash_profile
:文件中内容调用的是~/.bashrc
文件。
12. 修改临时密码
1
2
3
4
5
| su mysql
# 用临时密码登录mysql
mysql -u root –p
# 修改成新的密码
mysql> set password for root@localhost = password('root');
|
13. 开放远程连接
1
2
3
4
5
6
7
| use mysql;
# GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '远程连接密码';
grant all privileges on *.* to 'root'@'%' identified by 'root';
# 刷新授权
flush privileges;
# 退出
quit;
|
14. 开放3306端口
1
2
3
4
5
6
7
| su root
# 开启3306
firewall-cmd --zone=public --add-port=3306/tcp --permanent
# 重启防火墙
firewall-cmd --reload
# 查看已经开放的端口
firewall-cmd --list-ports
|
15. 设置开机自启
1
2
3
4
5
6
7
8
| # 将服务文件拷贝到init.d下,并重命名为mysql,这一步前面已经做过
cp /home/mysql-5.7.17/support-files/mysql.server /etc/init.d/mysqld
# 赋予可执行权限
chmod +x /etc/init.d/mysqld
# 添加服务
chkconfig --add mysqld
# 显示服务列表
chkconfig --list
|
至此,CentOS7安装MySQL-5.7.17完成。
16. 新建MySQL用户并授权
1
2
3
4
| # 新建用户test1,密码test1
mysql> CREATE USER 'test1'@'localhost' IDENTIFIED BY 'test1';
# 授予普通DBA管理某个MySQL数据库的权限
mysql> grant all privileges on testdb to test1@'localhost'
|