# CentOS For MySQL
# Centos7.6 安装 MySQL5.7
# 前言
官网步骤
https://dev.mysql.com/doc/refman/5.7/en/linux-installation-yum-repo.html
# 找到对应的RPM包
https://dev.mysql.com/downloads/repo/yum/

复制下面红色框框的地址,这是下载地址

# 添加MySQL Yum存储库
替换掉下载地址为RPM包的下载地址
sudo yum localinstall 刚才复制的下载地址
完成后使用下面命令即可查看是否添加成功。
yum repolist enabled | grep "mysql.*-community.*"
# 选择安装版本
手动编辑/etc/yum.repos.d/mysql-community.repo 文件来选择安装版本。
vim /etc/yum.repos.d/mysql-community.repo
设置对应安装版本的enabled为1,其余版本设置为0。
注意:Community Server 节点才是对应的MySQL版本。
[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
2
3
4
5
6
通过下面指令可以查看是否配置成功!
yum repolist enabled | grep mysql

执行安装命令
sudo yum install mysql-community-server
# 启动MySQL服务器
启动
sudo service mysqld start
查看mysql状态
sudo service mysqld status
# CentOS6.8安装MySQL5.7
# 查看是否已有mysql版本
rpm -qa | grep mysql
# 有的话就删除掉再进行安装
卸载比较麻烦,这里提供一个较为全的卸载教程地址
https://www.cnblogs.com/taomylife/p/7234925.html
# 下载RPM、配置Yum包
wget https://dev.mysql.com/get/mysql57-community-release-el6-9.noarch.rpm
rpm -Uvh mysql57-community-release-el6-9.noarch.rpm
2
3
说明:安装成功后在/etc/yum.repos.d/下会多出 mysql-community-source.repo mysql-community.repo
# 安装MySQL
yum install mysql-community-server
说明:它会进行下载和安装 过程中需要输入两次Y
# 开启MySQL 服务
service mysqld start
# 进入MySQL
mysql -u root -p
# 安装后更改密码
mysql安装成功后创建的超级用户'root'@'localhost'的密码会被存储在Mysql日志中
可以使用命令查看密码
grep 'temporary password' /var/log/mysqld.log

用该密码登录到服务端后,必须马上修改密码,不然会报如下错误:
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
修改密码
更改数据库的密码鉴别方式
set global validate_password_policy=0;
1更改数据库的密码长度为6
set global validate_password_length=6;
1更改密码
alter user 'root'@'localhost' identified by '123456';
1别忘了最后一步。
flush privileges;
1
注意
validate_password
默认安装。实现的默认密码策略
validate_password
要求密码包含至少一个大写字母,一个小写字母,一个数字和一个特殊字符,并且总密码长度至少为8个字符。
# MySQL配置文件
配置文件默认在/etc/my.cnf
下面是一套比较成熟的配置可直接复用
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
symbolic-links=0
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
#数据库默认字符集,主流字符集支持一些特殊表情符号(特殊表情符占用4个字节)
character-set-server=utf8mb4
#Mysql服务的唯一编号 每个mysql服务Id需唯一
server-id=1
#服务端口号 默认3306
port=9999
# 系统默认时区设置
default-time_zone = '+8:00'
#数据库字符集对应一些排序等规则,注意要和character-set-server对应
collation-server=utf8mb4_general_ci
#设置client连接mysql时的字符集,防止乱码
init_connect='SET NAMES utf8mb4'
#是否对sql语句大小写敏感,1表示不敏感
lower_case_table_names=1
#最大连接数
max_connections=400
#最大错误连接数
max_connect_errors=1000
#TIMESTAMP如果没有显示声明NOT NULL,允许NULL值
explicit_defaults_for_timestamp=true
#SQL数据包发送的大小,如果有BLOB对象建议修改成1G
max_allowed_packet=128M
#MySQL默认的wait_timeout 值为8个小时, interactive_timeout参数需要同时配置才能生效
interactive_timeout=1800
wait_timeout=1800
#内部内存临时表的最大值 ,设置成128M。
#比如大数据量的group by ,order by时可能用到临时表,
#超过了这个值将写入磁盘,系统IO压力增大
tmp_table_size=134217728
max_heap_table_size=134217728
#建议先调整为2M,后期观察调整
sort_buffer_size=2097152
#在MySQL暂时停止响应新请求之前的短时间内多少个请求可以被存在堆栈中
#官方建议back_log = 50 + (max_connections / 5),封顶数为900
back_log=600
#使用–skip-external-locking MySQL选项以避免外部锁定。该选项默认开启
external-locking = FALSE
# 服务器线程缓存这个值表示可以重新利用保存在缓存中线程的数量,
# 当断开连接时如果缓存中还有空间,那么客户端的线程将被放到缓存中,
# 如果线程重新被请求,那么请求将从缓存中读取,如果缓存中是空的或者是新的请求,
# 那么这个线程将被重新创建,如果有很多新的线程,
# 增加这个值可以改善系统性能.通过比较 Connections 和 Threads_created 状态的变量,
# 可以看到这个变量的作用。设置规则如下:
# 1GB 内存配置为8,2GB配置为16,3GB配置为32,4GB或更高内存,可配置更大。
thread_cache_size = 300
#指定单个查询能够使用的缓冲区大小,缺省为1M
query_cache_limit = 4M
# MySql的随机读(查询操作)缓冲区大小。
# 当按任意顺序读取行时(例如,按照排序顺序),将分配一个随机读缓存区。
# 进行排序查询时,MySql会首先扫描一遍该缓冲,以避免磁盘搜索,提高查询速度,
# 如果需要排序大量数据,可适当调高该值。但MySql会为每个客户连接发放该缓冲空间,
# 所以应尽量适当设置该值,以避免内存开销过大。
read_rnd_buffer_size = 16M
#批量插入数据缓存大小,可以有效提高插入效率,默认为8M
bulk_insert_buffer_size = 64M
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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
# MySQL设置远程访问
登录数据库,然后直接set用户user为root的host地址为%通配
use mysql;
update user set host = '%' where user = 'root';
flush privileges;
2
3
如果禁止访问直接set回localhost即可
# 用户相关
# 创建用户
create user 'qm'@'localhost' identified by '123';
// qm=用户名 123=密码
// localhost可以设置为 % 则可远程访问
2
3
# 授权
语法
GRANT privileges ON databasename.tablename TO 'username'@'host';
privileges
- 用户的操作权限,如SELECT
,INSERT
,UPDATE
等,如果要授予所的权限则使用ALL
;databasename
- 数据库名tablename
- 表名- 如果要授予该用户对所有数据库和表的相应操作权限则可用
*
表示, 如*.*
. username
- 用户名host
- 允许访问的host ,如localhost
本地访问,%
所有可访问。
例如
GRANT ALL ON *.* TO 'qm'@'%';
# 创建+授权
grant privileges on databasename.* to 'username'@'host' identified by '用户密码';
# 撤销授权
语法
REVOKE privilege ON databasename.tablename FROM 'username'@'host';
说明: privilege, databasename, tablename - 同授权部分.
# 删除用户
DROP USER 'username'@'host';
# 查看用户的授权
show grants for 'username'@'host';