CentOS7 下使用YUM安装 MySQL5.7
于2015年10月19日(美国时间),Oracle公司发布了开源数据库MySQL的最新版本5.7。到现在已有将近3年之久,经过这几年的改进,MySQL5.7性能最高可达前一个版本的3倍,现在官网的最新版本是5.7.18.在这里,我将介绍yum的安装MySQL5.7的方法。
1:添加MySQL5.7的YUM源,建议安装epel源
# yum install epel-release
根据CentOS版本的不同,添加rpm的地址也有所不同
Centos6.5
# yum install http://dev.mysql.com/get/mysql-community-release-el6-5.noarch.rpm
CentOS7
# yum install https://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm
2:激活MySQL5.7源
# yum-config-manager --disable mysql56-community # yum-config-manager --enable mysql57-community-dmr
3:如果系统里面没有yum-config-manage命令,执行如下命令进行安装。
# yum install yum-utils
4:执行安装MySQL5.7
# yum install mysql mysql-devel mysql-server mysql-utilities
5:初始化密码,由于我没有在/root目录下找到第一次启动的随机密码,我就使用了如下操作
# vim /etc/my.cnf # 在mysqld字段中添加 [mysqld] skip-grant-tables #然后执行 systemctl restart mysqld #此时直接敲mysql进入mysql的终端执行如下命令 update mysql.user set authentication_string=password(123456) where user='root' and Host = 'localhost'; #此时重启mysql后,注释掉刚刚添加的那个字段,systemctl restart mysqld 会告诉你的密码不符合复杂程度要求,需要再次更改; #然后用123456这个密码进入mysql终端,在此执行如下命令 SET PASSWORD FOR 'root'@'localhost' = PASSWORD('1234@Mfg'); FLUSH PRIVILEGES; #之后用新的密码登录即可~~~
6:修改默认字符集为UTF-8
#由于现在大家都使用UTF-8作为默认字符集,因此需要在mysqld中添加如下字段 [mysqld] character-set-server=utf8
7:由于默认的密码策略要求必须符合复杂程度,这是因为MySQL5.7以后引入了密码策略插件
mysql> SHOW VARIABLES LIKE 'validate_password%'; +--------------------------------------+--------+ | Variable_name | Value | +--------------------------------------+--------+ | validate_password_check_user_name | OFF | | validate_password_dictionary_file | | | validate_password_length | 8 | | validate_password_mixed_case_count | 1 | | validate_password_number_count | 1 | | validate_password_policy | MEDIUM | | validate_password_special_char_count | 1 | +--------------------------------------+--------+ mysql> show plugins; | ngram | ACTIVE | FTPARSER | NULL | GPL | | validate_password | ACTIVE | VALIDATE PASSWORD | validate_password.so | GPL | 由于本人使用觉得很不方便,可以在配置文件中添加如下字段将其关闭!当然这也做是很不理智的,毕竟安全大于一切!
#关闭密码复杂策略
validate_password=off
8:完整的MySQL配置优化后的配置文件如下(本人参照网上的示例之后自己整理的):
[mysqld] #修改最大连接数 max_connections = 500 #设置默认字符集为utf8 character-set-server=utf8 #查询排序时缓冲区大小,只对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
9:发现一部分人使用yum安装后,再使用配置文件中指定datadir 和 basedir,导致启动失败,这里制定后还需要修改启动文件,还需要给制定的目录赋予mysql账号的权限;这里yum安装后datadir 和basedir的位置如下代码所示:
mysql> show variables like '%datadir%'; +---------------+-----------------+ | Variable_name | Value | +---------------+-----------------+ | datadir | /var/lib/mysql/ | +---------------+-----------------+ 1 row in set (0.00 sec) mysql> show variables like '%basedir%'; +---------------+-------+ | Variable_name | Value | +---------------+-------+ | basedir | /usr/ | +---------------+-------+ 1 row in set (0.00 sec)
centos7 安装MySQL7 并更改初始化密码
1、官方安装文档
http://dev.mysql.com/doc/mysql-yum-repo-quick-guide/en/
2、下载 Mysql yum包
http://dev.mysql.com/downloads/repo/yum/
下载到本地再上传到服务器,或者使用wget 直接下载
wget http://repo.mysql.com/mysql57-community-release-el7-10.noarch.rpm
3、安转软件源
将platform-and-version-specific-package-name
替换为你下载的rpm名
sudo rpm -Uvh platform-and-version-specific-package-name.rpm
例如
rpm -Uvh mysql57-community-release-el7-10.noarch.rpm
4、安装mysql服务端
yum install -y mysql-community-server
如果网络环境不是很好,执行完命令就可能会等待一些是时间
5、启动mysql
service mysqld start
systemctl start mysqld.service
6、检查mysql 的运行状态
service mysqld status
systemctl status mysqld.service
7、修改临时密码
Mysql5.7默认安装之后root是有密码的。
7.1 获取MySQL的临时密码
为了加强安全性,MySQL5.7为root用户随机生成了一个密码,在error log中,关于error log的位置,如果安装的是RPM包,则默认是/var/log/mysqld.log。
只有启动过一次mysql才可以查看临时密码
grep 'temporary password' /var/log/mysqld.log
这里的密码是YdsGaxOq>2n!
7.2 登陆并修改密码
使用默认的密码登陆
mysql -uroot -p
用该密码登录到服务端后,必须马上修改密码,不然会报如下错误:
mysql> select @@log_error;
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
mysql>
修改密码
ALTER USER 'root'@'localhost' IDENTIFIED BY 'root123';
如果密码设置太简单出现以下的提示
如何解决ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
呢? 这里直接提供解决方案文末有详细的说明
必须修改两个全局参数:
首先,修改validate_password_policy参数的值
mysql> set global validate_password_policy=0;
再修改密码的长度
mysql> set
global validate_password_length=1;
再次执行修改密码就可以了
ALTER USER 'root'@'localhost' IDENTIFIED BY 'root123';
8、授权其他机器登陆
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;
FLUSH PRIVILEGES;