# CentOS For MySQL

# Centos7.6 安装 MySQL5.7

# 前言

官网步骤

https://dev.mysql.com/doc/refman/5.7/en/linux-installation-yum-repo.html
1

# 找到对应的RPM包

https://dev.mysql.com/downloads/repo/yum/
1

进入地址 (opens new window)

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

# 添加MySQL Yum存储库

替换掉下载地址为RPM包的下载地址

sudo yum localinstall 刚才复制的下载地址
1

完成后使用下面命令即可查看是否添加成功。

yum repolist enabled | grep "mysql.*-community.*"
1

# 选择安装版本

手动编辑/etc/yum.repos.d/mysql-community.repo 文件来选择安装版本。

vim /etc/yum.repos.d/mysql-community.repo 
1

设置对应安装版本的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
1
2
3
4
5
6

通过下面指令可以查看是否配置成功!

yum repolist enabled | grep mysql
1

执行安装命令

sudo yum install mysql-community-server
1

# 启动MySQL服务器

启动

sudo service mysqld start
1

查看mysql状态

sudo service mysqld status
1

# CentOS6.8安装MySQL5.7

# 查看是否已有mysql版本

rpm -qa | grep mysql
1

# 有的话就删除掉再进行安装

卸载比较麻烦,这里提供一个较为全的卸载教程地址

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
1
2
3

说明:安装成功后在/etc/yum.repos.d/下会多出 mysql-community-source.repo mysql-community.repo

# 安装MySQL

yum install mysql-community-server
1

说明:它会进行下载和安装 过程中需要输入两次Y

# 开启MySQL 服务

service mysqld start
1

# 进入MySQL

mysql -u root -p
1

# 安装后更改密码

mysql安装成功后创建的超级用户'root'@'localhost'的密码会被存储在Mysql日志中

可以使用命令查看密码

grep 'temporary password' /var/log/mysqld.log
1

用该密码登录到服务端后,必须马上修改密码,不然会报如下错误:

ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
1
  • 修改密码

    更改数据库的密码鉴别方式

    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
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
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;
1
2
3

如果禁止访问直接set回localhost即可

# 用户相关

# 创建用户

create user 'qm'@'localhost' identified by '123';
// qm=用户名 123=密码
// localhost可以设置为 % 则可远程访问
1
2
3

# 授权

语法

GRANT privileges ON databasename.tablename TO 'username'@'host';
1
  • privileges - 用户的操作权限,如SELECT , INSERT , UPDATE 等,如果要授予所的权限则使用ALL;
  • databasename - 数据库名
  • tablename - 表名
  • 如果要授予该用户对所有数据库和表的相应操作权限则可用*表示, 如*.*.
  • username - 用户名
  • host - 允许访问的host ,如 localhost 本地访问,% 所有可访问。

例如

GRANT ALL ON *.* TO 'qm'@'%';
1

# 创建+授权

grant privileges on databasename.* to 'username'@'host' identified by '用户密码';
1

# 撤销授权

语法

REVOKE privilege ON databasename.tablename FROM 'username'@'host';
1

说明: privilege, databasename, tablename - 同授权部分.

# 删除用户

DROP USER 'username'@'host';
1

# 查看用户的授权

show grants for 'username'@'host';
1
最近更新: 2019/10/17 上午4:20:42