• MySQL-5.7.19 在阿里云 CentOS-7.0 上的安装


    工具准备

    查看系统是否安装了yum工具:

    [root@wangbo srv]# rpm -qa | grep yum
    yum-metadata-parser-1.1.4-10.el7.x86_64
    yum-3.4.3-161.el7.centos.noarch
    yum-plugin-fastestmirror-1.1.31-50.el7.noarch

    表示已经安装了,如果没有安装,可以参考:https://jingyan.baidu.com/article/ce09321bbde1de2bff858f9a.html

    rpm和yum命令参考:https://www.cnblogs.com/qingjiaowoxiaoxioashou/p/7059701.html

    首先检查下是否安装了服务

    [root@wangbo srv]# yum list installed | grep mysql

    或者

    [root@wangbo srv]# rpm -qa | grep mysql

    没有显示就表示没有安装,如果安装了可以删除,如下所示:

    下载安装源文件

    安装在 /srv/mysql/ 文件夹下。

    [root@wangbo srv]# mkdir mysql
    [root@wangbo srv]# cd mysql
    [root@wangbo mysql]# 

    下载并安装MySQL官方的 Yum Repository

    [root@wangbo mysql]# wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm

    文件是红色的,需要修改文件权限,修改完会看到文件变绿色了。

    [root@wangbo mysql]# chmod 755 mysql57-community-release-el7-10.noarch.rpm

    开始安装mysql源文件

    [root@wangbo mysql]# yum install -y mysql57-community-release-el7-10.noarch.rpm

    接下来会显示安装过程,最后显示Complete! 的时候就表示安装好了。

    检查mysql源是否安装成功

    [root@wangbo mysql]# yum repolist enabled | grep "mysql.*-community.*"

    看到上图所示表示安装成功。 

    安装mysql数据库

    开始安装数据库服务

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

    接下来会显示安装过程。最后显示Complete! 的时候就表示安装好了。

    启动MySQL数据库

    [root@wangbo mysql]# systemctl start mysqld

    查看数据库状态

    [root@wangbo mysql]# systemctl status mysqld

    数据库设置

    设置开机启动

    [root@wangbo mysql]# systemctl enable mysqld

    通知systemd重载配置文件,如果是在启动mysql服务之前设置的,则不需要这一步了。

    [root@wangbo mysql]# systemctl daemon-reload

    修改密码策略

    mysql共有以下几种密码策略:

    策略检查规则
    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

    在 /etc/my.cnf 文件添加validate_password_policy配置,指定密码策略

    [root@wangbo mysql]# vi /etc/my.cnf

    按 i 进入编辑状态

    # 选择0(LOW),1(MEDIUM),2(STRONG)其中一种,选择2需要提供密码字典文件
    validate_password_policy=0

    如果不需要密码策略,添加 my.cnf 文件中添加如下配置禁用即可:

    validate_password = off

    我们这里选择禁用密码策略,按 ESC,然后 :wq! 保存退出。

    重新启动mysql服务使配置生效:

    [root@wangbo mysql]# systemctl restart mysqld

    修改root用户默认密码

    mysql安装完成之后,在/var/log/mysqld.log文件中给root生成了一个默认密码。通过下面的方式找到root默认密码,然后登录mysql进行修改:

    [root@wangbo mysql]# grep 'temporary password' /var/log/mysqld.log
    2019-03-29T09:43:27.569868Z 1 [Note] A temporary password is generated for root@localhost: h<zuy>K-I6RD

    用该密码登录数据库,红框中输入上面查询到的默认密码 h<zuy>K-I6RD

    [root@wangbo mysql]# mysql -u root -p

    使用SQL修改密码

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

    如果提示下面内容,表示修改成功

    Query OK, 0 rows affected (0.00 sec)

    如果密码太简单则会报一个错误,这就涉及到密码策略的修改了。所以我们这一步应该放在修改密码策略之后做。

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

    查看密码策略,只有修改完密码才能执行SQL,不然会报一个错误。

    mysql> show variables like '%password%';

    如果没有修改完密码,会报以下错误,提示必须先修改密码。

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

    如果修改完密码了,则会显示查询结果。

    添加远程登录用户

    默认只允许root帐户在本地登录,如果要在其它机器上连接mysql,必须修改root允许远程连接,或者添加一个允许远程连接的帐户,为了安全起见,我添加一个新的帐户:

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

    提示添加成功

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

    配置默认编码

    这一步一般不需要,默认的就是utf-8。

    查看数据库默认编码如下所示:

    mysql> show variables like '%character%';

    修改/etc/my.cnf配置文件,在[mysqld]下添加编码配置,如下所示:

    [mysqld]
    character_set_server=utf8
    init_connect='SET NAMES utf8'

    重新启动mysql服务使配置生效:

    systemctl restart mysqld

    阿里云设置

    开启服务器端口

    接下来我用Navicate For MySQL 连接数据库,报了10038的连接错误,是远程服务器3306端口未开放。

    所以登录阿里云后台管理,找到安全组规则,添加一个安全组规则,

    新建数据库

    使用Navicate连接上数据库后,新建一个数据库

    注意排序规则的选择:

    utf8_unicode_ci和utf8_general_ci对中、英文来说没有实质的差别。

    utf8_general_ci 校对速度快,但准确度稍差。

    utf8_unicode_ci 准确度高,但校对速度稍慢。

    如果你的应用有德语、法语或者俄语,请一定使用utf8_unicode_ci。一般用utf8_general_ci就够了。

    附:

    ci是 case insensitive, 即 "大小写不敏感", a 和 A 会在字符判断中会被当做一样的;

    bin 是二进制, a 和 A 会别区别对待。

    例如你运行:

    SELECT * FROM table WHERE txt = 'a'

    那么在utf8_bin中你就找不到 txt = 'A' 的那一行, 而 utf8_general_ci 则可以。

    utf8_general_ci 不区分大小写,这个你在注册用户名和邮箱的时候就要使用。

    utf8_general_cs 区分大小写,如果用户名和邮箱用这个 就会照成不良后果。

    utf8_bin 字符串每个字符串用二进制数据编译存储。 区分大小写,而且可以存二进制的内容。

    错误记录

    mysql设置sql_mode

    安装好后,我用Navicate连接上了数据库,但是每次执行SQL一直报一个错误,执行结果却是正确的。

    错误如下:

    [Err] 1055 - Expression #1 of ORDER BY clause is not in GROUP BY clause and contains nonaggregated column 'information_schema.PROFILING.SEQ' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by

    参考博客地址:https://www.cnblogs.com/skymyyang/p/7551646.html

    解决办法:

    (1)直接通过SQL语句进行设置。

    #查看数据库版本和sql_mode
    select VERSION(),@@sql_mode;
    #将ONLY_FULL_GROUP_BY设置为空
    SET sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));

    这样设置后我发现重新连接后又恢复了,所以还是直接修改配置文件吧。

    (2)修改 my.cnf 配置文件

    首先查询出数据库的sql_mode

    select VERSION(),@@sql_mode;
    ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

    在sql_mode 中去掉only_full_group_by ,将下列内容加入,然后保存配置文件后重启数据库,解决问题!

    sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'

    具体操作

    在 /etc/my.cnf 文件添加 sql_mode 配置

    [root@wangbo mysql]# vi /etc/my.cnf

    按 i 进入编辑状态,添加下列内容

    sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'

    按 ESC,然后 :wq! 保存退出。

    重新启动mysql服务使配置生效:

    [root@wangbo mysql]# systemctl restart mysqld

    使用Navicate连接报1130错误

    错误:ERROR 1130: Host '192.168.1.3' is not allowed to connect to thisMySQL serve

    错误1130:主机192.168.1.3”不允许连接到thismysql服务

    原因:被连接的数据不允许使用 192.168.1.3访问,只允许是用 localhost;

    解决办法:

    可能是你的帐号不允许从远程登陆,只能在localhost。这个时候只要在localhost的那台电脑,登入mysql后,更改"mysql" 数据库里的 "user" 表里的 "host"项,从"localhost"改称"%"

     1、启用 cmd 

    输入 : mysql -u -root -p 

    若是提示 ‘mysql’不是内部或外部命令,也不是可运行的程序.那需要配置环境变量  在配置 path 变量添加 “……mysq/MYSQL Server5.7in”

    总体运行语句:

    mysql -u root -p

    mysql>use mysql;

    mysql>select 'host' from user where user='root';

    mysql>update user set host = '%' where user ='root';

    mysql>flush privileges;

    mysql>select 'host'   from user where user='root';

    运行完毕后再次连接测试,若还不行重启mysql服务,或是直接重启电脑。

  • 相关阅读:
    分享15款为jQuery Mobile定制的插件
    显​示​器​分​辨​率​调​高​后​黑​屏​的​最​佳​解​决​办​法
    out 和 ref 之间的区别整理
    赋值操作符重载
    最长公共子串
    最长递增子序列
    动态规划
    Eclipse支持Jquery代码提示(JqeuryWTP)
    ubuntu10.04编译内核不显示grub菜单解决
    CSS水平导航条和纵向导航条
  • 原文地址:https://www.cnblogs.com/wbxk/p/8450577.html
Copyright © 2020-2023  润新知