1.下载源安装包

[root@iZpo5ptr2u7bkrZ local]# cd /usr/local/

[root@iZpo5ptr2u7bkrZ local]# wget https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm

2.安装mysql源

[root@iZpo5ptr2u7bkrZ local]# yum -y localinstall mysql57-community-release-el7-11.noarch.rpm

3.在线安装Mysql

[root@iZpo5ptr2u7bkrZ local]# yum -y install mysql-community-server

4.启动Mysql服务

[root@iZpo5ptr2u7bkrZ local]# systemctl start mysqld

5.设置开机启动

[root@iZpo5ptr2u7bkrZ local]# systemctl enable mysqld

[root@iZpo5ptr2u7bkrZ local]# systemctl daemon-reload

6.修改root本地登录密码

mysql安装完成之后,在/var/log/mysqld.log文件中给root生成了一个临时的默认密码。

[root@iZpo5ptr2u7bkrZ local]# grep 'temporary password' /var/log/mysqld.log

2018-07-18T11:37:37.297011Z 1 [Note] A temporary password is generated for root@localhost: o7a-G>a88*CJ

2018-07-18T11:40:08.512589Z 1 [Note] A temporary password is generated for root@localhost: jlUliTx

查看最后一个为准,这里的密码是jlUliTx

7.登陆并修改密码

使用默认的密码登陆

[root@iZpo5ptr2u7bkrZ local]# mysql -uroot -pjlUliTx

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

mysql> select user();

ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.

mysql>

修改密码

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';

如果密码设置太简单出现以下的提示

mysql> ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

这个其实与validate_password_policy的值有关。

validate_password_policy有以下取值:

Policy

Tests Performed

0 or LOW

Length

1 or MEDIUM

Length; numeric, lowercase/uppercase, and special characters

2 or STRONG

Length; numeric, lowercase/uppercase, and special characters; dictionary file

默认是1,即MEDIUM,所以刚开始设置的密码必须符合长度,且必须含有数字,小写或大写字母,特殊字符。

有时候,只是为了自己测试,不想密码设置得那么复杂,譬如说,我只想设置root的密码为123456。

必须修改两个全局参数:

首先,修改validate_password_policy参数的值

mysql> set global validate_password_policy=0;

Query OK, 0 rows affected (0.00 sec)

这样,判断密码的标准就基于密码的长度了。这个由validate_password_length参数来决定。

mysql> select @@validate_password_length;

+----------------------------+

| @@validate_password_length |

+----------------------------+

| 8 |

+----------------------------+

1 row in set (0.00 sec)

如果想长度限制在8位一下,修改validate_password_length参数的值

mysql> set global validate_password_length=1;

Query OK, 0 rows affected (0.00 sec)

mysql> select @@validate_password_length;

+----------------------------+

| @@validate_password_length |

+----------------------------+

| 4 |

+----------------------------+

1 row in set (0.00 sec)

8.设置允许远程登录,若不需要,请忽略

Mysql默认不允许远程登录,我们需要设置下,并且防火墙开放3306端口;

mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;

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

mysql> exit;

Bye

退出下,开放3306端口

[root@iZpo5ptr2u7bkrZ local]# firewall-cmd --zone=public --add-port=3306/tcp --permanent

success

[root@iZpo5ptr2u7bkrZ local]# firewall-cmd --reload

success

9.配置默认编码为utf8mb4支持emoji表情

修改/etc/my.cnf配置文件支持emoji表情,如下所示:

[client]

# 客户端来源数据的默认字符集

default-character-set = utf8mb4

[mysqld]

# 服务端默认字符集

character-set-server=utf8mb4

# 连接层默认字符集

collation-server=utf8mb4_unicode_ci

[mysql]

# 数据库默认字符集

default-character-set = utf8mb4

10.Mysql参数优化

[mysqld]

#修改最大连接数

max_connections = 500

#查询排序时缓冲区大小,只对order by和group by起作用,可增大此值为16M

sort_buffer_size = 16M

#查询缓存限制,只有1M以下查询结果才会被缓存,以免结果数据较大把缓存池覆盖

query_cache_limit = 1M

#查看缓冲区大小,用于缓存SELECT查询结果,下一次有同样SELECT查询将直接从缓存池返回结果,可适当成倍增加此值

query_cache_size = 16M

#给所有的查询做cache,代表使用缓冲

query_cache_type = 1

#设置以顺序扫描的方式扫描表数据的时候使用缓冲区的大小

read_buffer_size = 8M

#打开文件数限制

open_files_limit = 10240

#修改InnoDB为独立表空间模式,每个数据库的每个表都会生成一个数据空间

innodb_file_per_table = 1

#索引和数据缓冲区大小,一般设置物理内存的60%-70%

innodb_buffer_pool_size = 1G

#缓冲池实例个数,推荐设置4个或8个

innodb_buffer_pool_instances = 8

#2代表只把日志写入到系统缓存区,再每秒同步到磁盘,效率很高

innodb_flush_log_at_trx_commit = 2

#日志缓冲区大小,由于日志最长每秒钟刷新一次,所以一般不用超过16M

innodb_log_buffer_size = 8M

#back_log参数的值指出在MySQL暂时停止响应新请求之前的短时间内多少个请求可以被存在堆栈中

back_log = 1024

#thread cache 池中存放的最大连接数

thread_cache_size = 64

#开启慢查询日志

slow_query_log = ON

#关闭密码复杂策略

validate_password=off

[mysql]

# 数据库默认字符集

default-character-set = utf8mb4

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐