zoukankan      html  css  js  c++  java
  • 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)

    PS:补充说明

    由于本人当时比较愚钝,没有找到安装完成后的临时密码,后面发下在/var/log/mysqld.log文件中

    [root@iZ8vbdzsluhqdi7xr4r99wZ ~]# grep "A temporary password"  /var/log/mysqld.log
    2017-07-11T08:52:22.386970Z 1 [Note] A temporary password is generated for root@localhost: qc&Urn5>kUT&
  • 相关阅读:
    【2021-01-07】叫我“何工”就好
    2021年的 目标计划
    转:我在拼多多的三年 https://www.leadroyal.cn/?p=1228#more-1228
    匀强电场等效重力场
    开源图片素材管理软件-civet
    心学#传习录学习
    工作感受月记202101月
    统计字典序元音字符的数量
    可被5整除的二进制
    假期刷题--JAVA
  • 原文地址:https://www.cnblogs.com/skymyyang/p/7125275.html
Copyright © 2011-2022 走看看