数据库安装
# 数据库二进制安装
# 1.YUM安装数据库
MySQL Yum仓库提供了用于在Linux平台上安装MySQL服务器,客户端和其他组件的RPM包。mysql-yum安装下载地址 (opens new window)
使用MySQL Yum仓库时,默认选择安装最新的MySQL版本。如果需要使用低版本请按如下操作。
# 1.安装MySQL仓库源
[root@sql ~]# rpm -ivh https://dev.mysql.com/get/mysql80-community-release-el7-1.noarch.rpm
1
# 2.选择并启用适合当前平台的发行包
//列出所有MySQL发行版仓库
[root@sql ~]# yum repolist all|grep mysql
//禁用8.0发行版仓库, 启用5.7发行版仓库
[root@sql ~]# yum install yum-utils
[root@sql ~]# yum-config-manager --disable mysql80-community
[root@sql ~]# yum-config-manager --enable mysql57-community
1
2
3
4
5
6
7
2
3
4
5
6
7
可以手动编辑/etc/yum.repos.d/mysql-community.repo 文件配置仓库
[mysql57-community]
name=MySQL 5.7 Community Server
baseurl=http://repo.mysql.com/yum/mysql-5.7-community/el/6/$basearch/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
1
2
3
4
5
6
2
3
4
5
6
# 3.通过以下命令安装MySQL, 并启动MySQL
[root@sql ~]# yum install -y mysql-community-server
[root@sql ~]# systemctl start mysqld
[root@sql ~]# systemctl enable mysqld
1
2
3
2
3
MySQL服务器初始化(仅适用于MySQL 5.7)在服务器初始启动时,如果服务器的数据目录为空,则会发生以下情况: • 服务器已初始化。 • 在数据目录中生成SSL证书和密钥文件。 • validate_password插件安装并启用。 • 超级用户帐户‘root‘@’localhost’已创建。
超级用户的密码被设置并存储在错误日志文件中。要显示它,请使用以下命令:
[root@vm-70-160 ~]# grep "password" /var/log/mysqld.log
2018-04-28T07:11:51.589629Z 1 [Note] A temporary password is generated for root@localhost: jHlRHucap3+7
通过使用生成的临时密码登录并尽快更改root密码并为超级用户帐户设置自定义密码
[root@vm-70-160 ~]# mysql -uroot -pjHlRHucap3+7
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'Bgx123.com';
1
2
3
4
5
2
3
4
5
MySQL的validate_password插件默认安装。将要求密码至少包含大写、小写、数字、特殊字符、并且总密码长度至少为8个字符。
# 2.通用安装数据库
采用二进制免编译方式安装MySQL, 不需要复杂的编译设置和编译时间等待,解压下载的软件包,初始化即可完成MySQL的安装和启动。MySQL二进制包下载地址 (opens new window)
MySQL二进制包官方安装手册 (opens new window)
# 1.基础环境准备
[root@sql ~]# systemctl stop firewalld
[root@sql ~]# systemctl disable firewalld
[root@sql ~]# setenforce 0
//建立用户与相应目录
[root@sql ~]# groupadd mysql
[root@sql ~]# useradd -r -g mysql -s /sbin/nologin mysql
[root@sql ~]# mkdir /soft/src -p && cd /soft/src
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
# 2.下载MySQL并安装
[root@sql src]# wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.22-linux-glibc2.12-x86_64.tar.gz
[root@sql src]# tar xf mysql-5.7.22-linux-glibc2.12-x86_64.tar.gz -C /soft
[root@sql src]# ln -s /soft/mysql-5.7.22-linux-glibc2.12-x86_64/ /soft/mysql
1
2
3
2
3
# 3.进行MySQL初始化
//创建初始化目录以及数据库数据目录
[root@sql ~]# mkdir /soft/mysql/{mysql-file,data}
[root@sql ~]# chown mysql.mysql /soft/mysql/
//初始化数据库
[root@sql ~]# /soft/mysql/bin/mysqld --initialize \
--user=mysql --basedir=/soft/mysql \
--datadir=/soft/mysql/data
----
---
//初始化数据库会告诉默认登陆账户与密码
2018-04-28T02:30:33.954980Z 1 [Note] A temporary password is generated for'root@localhost: I,isfqnx.0tO'
-------
//使用ssl连接, 初始化后重新授权目录权限[如不需要可忽略]
[root@sql ~]# /soft/mysql/bin/mysql_ssl_rsa_setup \
--datadir=/soft/mysql/data/
[root@sql ~]# chown -R mysql.mysql /soft/mysql/
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# 4.建立MySQL配置文件
//mysql安装目录及mysql数据库目录
[root@sql ~]# cp /etc/my.cnf /etc/my.cnf_bak
[root@sql ~]# vim /etc/my.cnf
[mysqld]
basedir=/soft/mysql
datadir=/soft/mysql/data
1
2
3
4
5
6
2
3
4
5
6
# 5.启动MySQL数据库
//方式1,使用 mysqld_safe
[root@sql ~]# /soft/mysql/bin/mysqld_safe --user=mysql &
//方式2, 使用(systemV)方式管理, [强烈推荐]
[root@sql ~]# cp /soft/mysql/support-files/mysql.server /etc/init.d/mysqld
[root@sql ~]# chkconfig --add mysqld
[root@sql ~]# chkconfig mysqld on
//修改安装目录与数据存放目录
[root@sql ~]# sed -i '/^basedir=/cbasedir=\/soft\/mysql' /etc/init.d/mysqld
[root@sql ~]# sed -i '/^datadir=/cdatadir=\/soft\/mysql\/data' /etc/init.d/mysqld
//启动数据库
[root@sql ~]# /etc/init.d/mysqld start
Starting MySQL. SUCCESS!
//检查进程
[root@sql ~]# ps aux|grep mysql
//检查端口
[root@sql ~]# lsof -i :3306
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
mysqld 2659 mysql 16u IPv6 28431 0t0 TCP *:mysql (LISTEN)
[root@sql ~]# ss -lntup|grep 3306
tcp LISTEN 0 80 :::3306 :::* users:(("mysqld",pid=2659,fd=16))
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# 6.连接数据库测试
//默认情况没有mysql命令, 如果有可能使用过yum安装, 这样容易连错数据库(PATH路径存在命令执行优先级问题)
[root@sql ~]# mysql
-bash: mysql: command not found
//可以选择添加路径至PATH中, 或者直接使用绝对路径执行
[root@sql ~]# echo "export PATH=$PATH:/soft/mysql/bin" >> /etc/profile
[root@sql ~]# source /etc/profile
//登陆数据库
[root@sql ~]# mysql -uroot -p"I,isfqnx.0tO"
//默认系统配置数据库密码必须修改, 否则无法使用数据库
mysql> show databases;
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
//修改系统默认密码
mysql> alter user root@'localhost' identified by 'bgx';
Query OK, 0 rows affected (0.01 sec)
mysql> exit;
//退出后使用新密码重新登录数据库
[root@sql ~]# mysql -uroot -p"bgx"
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
4 rows in set (0.02 sec)
mysql> exit;
注意: 如果需要重新初始化[可选]
//如果重新初始化会导致数据全部丢失
[root@sql ~]# yum install -y psmisc
[root@sql ~]# killall mysqld
[root@sql ~]# rm -rf /soft/mysql/data/*
[root@sql ~]# /soft/mysql/bin/mysqld --initialize --user=mysql \
--basedir=/soft/mysql --datadir=/soft/mysql/data
#可不执行
[root@sql ~]# /soft/mysql/bin/mysql_ssl_rsa_setup --datadir=/soft/mysql/data
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
33
34
35
36
37
38
39
40
41
42
43
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
33
34
35
36
37
38
39
40
41
42
43
# 3.源码安装数据库
# 1.源码安装mysql需要依赖cmake、boost
[root@sql ~]# yum install libaio-devel gcc gcc-c++ ncurses ncurses-devel cmake -y
[root@sql ~]# useradd -M -s /sbin/nologin mysql
[root@sql ~]# mkdir /soft/src/ -p
1
2
3
2
3
# 2.下载源码包并编译MySQL
[root@sql ~]# wget http://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-boost-5.7.22.tar.gz
[root@sql ~]# tar xf mysql-boost-5.7.22.tar.gz
[root@sql ~]# cd mysql-5.7.22/
[root@sql ~]# cmake -DCMAKE_INSTALL_PREFIX=/soft/mysql-5.7.22 \
-DMYSQL_UNIX_ADDR=/soft/mysql-5.7.22/data/mysql.sock \
-DMYSQL_DATADIR=/soft/mysql-5.7.22/data \
-DSYSCONFDIR=/soft/mysql-5.7.22/conf \
-DWITH_MYISAM_STORAGE_ENGINE=0 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_MEMORY_STORAGE_ENGINE=0 \
-DWITH_READLINE=1 \
-DMYSQL_TCP_PORT=3306 \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DEXTRA_CHARSETS=all \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_BOOST=/soft/package/src/mysql-5.7.22/boost/boost_1_59_0
[root@sql ~]# make
[root@sql ~]# make install
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# 3.完成后基本优化
[root@sql ~]# ln -s /soft/mysql-5.7.22 /soft/mysql
[root@sql ~]# mkdir /soft/mysql/data
[root@sql ~]# chown -R mysql.mysql /soft/mysql
1
2
3
2
3
# 4.准备MySQL基础配置文件
[root@sql ~]# vim /etc/my.cnf
[mysqld]
basedir=/soft/mysql
datadir=/soft/mysql/data
1
2
3
4
2
3
4
# 5.拷贝MySQL程序启动文件
//拷贝官方准备的启动脚本
[root@sql ~]# cp /soft/mysql/support-files/mysql.server /etc/init.d/mysqld
//添加为系统服务, 并设定开机自启动
[root@sql ~]# chkconfig --add mysqld && chkconfig mysqld on
1
2
3
4
5
2
3
4
5
# 6.初始化MySQL
[root@sql ~]# /soft/mysql/bin/mysqld --initialize-insecure --user=mysql --basedir=/soft/mysql --datadir=/soft/mysql/data
//启动MySQL
[root@sql ~]# /etc/init.d/mysqld start
//为mysql命令添加环境变量,以便后续简化执行命令
[root@sql ~]# echo >> "export PATH=/data/soft/mysql/bin:$PATH" /etc/profile
[root@sql ~]# source /etc/profile
//源码编译MySQL默认root没有密码
[root@sql ~]# mysql
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
# 4.变更数据库密码
# 1.更改root密码
//第一种方式, 需要知道密码
[root@sql ~]# mysqladmin -uroot -pBgx123.com password 'Bgx111.com'
Warning: Since password will be sent to server in plain text, use ssl connection to ensure password safety.
[root@sql ~]# mysql -uroot -pBgx111.com
mysql>
//第二种方式, 登录MySQL, 修改相应表
mysql> update mysql.user set authentication_string=password('Bjtest123.com') where user='root';
mysql> flush privileges;
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
# 2.忘记mysql root密码
[root@sql ~]# vim /etc/my.cnf
[mysqld]
skip-grant-tables # 新增跳过授权表
//重启数据库生效
[root@sql ~]# systemctl restart mysqld
//查看表字段
mysql> select user,host,authentication_string from mysql.user;
+---------------+-----------+-------------------------------------------+
| user | host | authentication_string |
+---------------+-----------+-------------------------------------------+
| root | localhost | *C786BB788F276CD53317C80C1957E5F5696751F0 |
| mysql.session | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
| mysql.sys | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
+---------------+-----------+-------------------------------------------+
3 rows in set (0.00 sec)
//5.7.6版本后更新密码方式
mysql> update mysql.user set authentication_string=password('Bgx123.com') where user='root';
mysql> exit
//5.7.6版本前更新密码方式
mysql> update mysql.user set password=password('Bgx123.com') where user="root" and host="localhost";
[root@sql ~]# vim /etc/my.cnf
[mysqld]
#skip-grant-tables #注释
//重启数据库生效
[root@sql ~]# systemctl restart mysqld
//使用新密码登录数据库
[root@sql ~]# mysql -uroot -pBgx123.com
mysql>
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
33
34
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
33
34
原文链接http://www.sunrisenan.com/docs/mysql/mysql-1aofhklc0is34
上次更新: 2023/06/21, 07:37:46