MySQL在Linux下的安装配置与除错

MySQL8.0的一些特点:

    1.废弃了8以前版本的password()函数,修改密码不便.

    2.采用caching_sha2_password加密方式,很多客户端不支持.

 

一.yum安装

  由于CentOS7的base仓库默认使用MariaDB来替代MySQL,需要配置源(其他发行,如:Ubuntu则不需要,可直接apt-get install mysql*).

  首先进入官网看看:

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

  看到最下方,选择一个版本(也可以wget命令方式下载,看后面):  

  可以使用以下命令查看内核版本:

    uname -a

  你既可以在浏览器中下载,也可以找到你要下载的文件的url,使用命令:

   

    wget -i -c http://dev.mysql.com/get/mysql80-community-release-el7-1.noarch.rpm

 

  下载完成后,你可以使用

    yum install mysql80-community-release-el7-1.noarch.rpm

  也可使用

    rpm -i    mysql80-community-release-el7-1.noarch.rpm

  进行配置文件的安装.安装完成后你会在/etc/yum.repos/看到多出两个文件

    mysql-community.repo 和 mysql-community-source.repo

  这便是源的配置文件了,接下来使用命:

    yum -y install mysql-community-server

  即可完成安装. 另外,使用yum安装mysql后会自动覆盖系统安装的mariadb.对于一些新版本或包安装的MariaDB,可能需要先将其卸载(yum remove MariaDB*),然后才能成功安装mysql.同时,在卸载的时候需要注意,yum remove ...会将依赖一起删除,而这些依赖被其他程序所用,可使用rpm -e --nodeps file来指定卸载安装包而不删除依赖.另外,在安装前需要关闭其他的数据库进程,这是我经常犯的错误.

 

二.包安装

  这部分可以看官方文档:

    https://dev.mysql.com/downloads/mysql/

  里面有各个版本的安装指导,全英文,以后有空我会再来补充.

 

三.MySQL配置

  开启MySQL:

    systemctl start mysqld

  使用命令:

    systemctl status mysql或者netstat -tunlp |  grep 3306都可查看到服务是否开启.

 

  登陆时,密码可以去/var/log/mysql.log查看.如果不需要密码则直接回车就登陆.(通常MySQL默认需要密码且登陆后会提醒你使用ALTER USER语句修改用户密码,而MariaDB默认不需要)

  修改用户密码可使用SQL修改密码语句也可UPDATE数据库mysql中表user的相关记录,两者原理都是更新数据库mysql中的表user.(SQL语句可以自己找教程)

 

  如果忘记密码,可以跳过权限认证:

    编辑/etc/my.conf,然后在[mysqld]中添加 skip-grant-tables.

    然后启动或重启mysqld.

  这时不用密码登陆mysql:

    mysql -u root

  以--skip-grant-tables方式登陆的root无法使用alter user...和create user...等操作,只能在mysql.user表中更新记录,而且不能使用password()函数(因为8.0已经废弃了password函数),可以有以下两种解决方法:

    (1)算出你的新密码用caching_sha2_password加密后的字符,然后使用

        update mysql.user set authentication_string="字符串" where user="root" and host="登陆ip";

    (2)将authentication_string置为空

        update mysql.user set authentication_string="" where user="root" and host="登陆ip";

    然后去/etc/my.conf中删除skip-grant-tables,此时重启mysqld后,你就可以用空密码直接登陆,然后使用

        alter user "root"@"主机ip" identified by "新密码";

    完成密码修改.(目前在mysqld中修改密码,我只发现alter user...和直接更新mysql.user有用)

 

四.除错

  1.启动失败 

    如果你之前安装过MariaDB或其他版本MySQL,当安装完成后,想要开启MySQL时,可能失败.

    使用命令:

      systemctl status mysqld 或 journalctl -xe

    可以查看除错日志,一般会告诉你清空/var/lib/mysql中的内容,然后再重新开启mysqld就可以了.

    原因可能与socket连接和数据库dir有关,在/etc/my.conf中:

        datadir=/var/lib/mysql
        socket=/var/lib/mysql/mysql.sock

    /var/lib/mysql中的文件mysql.sock,这个文件用于连接数据库(本地或TCP/IP连接),不同的数据库配置不同.同时数据保存的记录也可能有差异.所以上一数据库的/var/lib/mysql目录中的内容在现在的数据库中无法使用,导致启动失败.删除该目录内的所有内容后,再重启数据库,可将新的配置文件写入该目录,启动成功. 

  2.某些客户端不支持caching_sha2_password加密方式

    (1)修改/etc/my.conf,在[mysqld]中添加 default-authentication-plugin=mysql_native_password,或者直接将原来这条记录前的"#"去掉.

        仅对新用户有效.

    (2)update mysql.user set default-authentication-plugin=mysql_native_password where user="root" and host="登陆ip";

        这中方式对所有用户有效,理论上没问题,没有实践过.

  3.密码设置失败

    可能与全局变量validate_password.policy有关(也可能是validate_password_policy).有以下取值

PolicyTests Performed
0 or LOWLength
1 or MEDIUMLength; numeric, lowercase/uppercase, and special characters
2 or STRONG

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

     查看改变量:

      show variables like 'validate_password%'; (查看是validate_password.policy还是validate_password_policy)

    | Variable_name                         | Value |
    +--------------------------------------+-------+
    | validate_password.check_user_name     | ON    |
    | 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     |
    +--------------------------------------+-------+

    修改该变量的值:

      set global validate_password.policy=0;

  4.系统操作在~/.mysql_history无记录

    MariaDB的所有操作都会保存在该文件中,而MySQL则不是,一些系统操作如"set global ...=...","create user ... identified by ..."等不会保存在其中,出现错误时无法使用上下键调出错误语句进行修改,必须重写.应该与某些全局变量,系统变量或者是插件有关,暂时没找到,以后会来补充.

   

转载于:https://my.oschina.net/u/3887035/blog/1862333

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值