zoukankan      html  css  js  c++  java
  • Centos7源码安装MySQL5.7

    a.连接数据库报111

    从一台linux远程连接另一台linux上的MySQL,出现ERROR 2003 (HY000): Can't connect to MySQL server on 'xxx.xxx.xxx.xx'(111)错误.

    1.skip_networking:这个参数让MySQL只能通过本机Socket连接(socket连接也是本地连接的默认方式);

    2.可能使用了bind_address=127.0.0.1;通过查看my.cnf,以上两个都是没设置的,排除掉这两种情况;

    3.排查DNS解析问题,检查是否设置了:skip_name_resolve,这个参数加上后,不支持主机名的连接方式;

    4.排查用户和密码问题,其实用户和密码的错误,不会出现111的,所以排除用户密码问题,密码错误报这个错;

    ERROR 1045 (28000): Access denied for user 'root'@'XXXX' (using password: YES)

    5.排查端口问题,有可能MySQL port不是默认的3306,连接时没有指定--port,最终得出监听端口是11306.

    b.mysql5.7初始化

    A.安装

    yum install -y cmake make gcc gcc-c++ libaio ncurses ncurses-devel
    wget https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-5.7.24-linux-glibc2.12-x86_64.tar.gz
    tar xf mysql-5.7.24-linux-glibc2.12-x86_64.tar.gz -C /usr/local/
    groupadd mysql
    useradd -r -g mysql -s /bin/false mysql
    
    cd /usr/local/
    mv mysql-5.7.24-linux-glibc2.12-x86_64/ mysql
    mkdir -p /data/mysql/tmp
    chown -R mysql:mysql /usr/local/mysql
    chown -R mysql:mysql /data/mysql/
    cd /usr/local/mysql/bin
    ./mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql
    

    初始化数据库,会生成一个临时密码

    B.启动

    配置my.cnf

    [mysqld]
    character_set_server=utf8
    init_connect='SET NAMES utf8'
    basedir=/usr/local/mysql
    datadir=/data/mysql
    #不区分大小写
    lower_case_table_names = 1
    #不开启sql严格模式
    sql_mode = "STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
    socket=/data/mysql/tmp/mysql.sock
    log-error=/data/mysql/tmp/mysqld.log
    pid-file=/data/mysql/tmp/mysqld.pid
    
    [mysqld_safe]
    log-error=/data/mysql/tmp/mysqld_safe.log
    pid-file=/data/mysql/tmp/mysqld_safe.pid
    
    # 添加开机启动
    cp /usr/local/mysql/support-files/mysql.server  /etc/init.d/mysqld
    # 修改启动脚本
    vim /etc/init.d/mysqld
    # 在46行添加路径
    basedir=/usr/local/mysql
    datadir=/data/mysql
    

    C.解决问题

    启动报错,这个问题在之前的博客中已经讲过

    创建文件并授予mysql权限

    touch /data/mysql/tmp/mysqld_safe.log
    chown -R mysql:mysql /data/mysql/
    echo "export PATH=/usr/local/mysql/bin:$PATH" >> /etc/profile
    source /etc/profile
    

    启动成功后,可以发现,pid文件是[mysqld]中定义的,log-error文件用的是[mysqld_safe]中定义的.

    连接数据库,找不到socket,解决办法:

    1.创建软链

    2.直接指定socket

    修改root密码并授权一个新用户

    两个用户以不同的方式均可登录

    c.mysql5.7忘记root密码,如何修改去密码

    # 关闭正在运行的 MySQL 
    service mysql stop
    # 运行
    mysqld_safe --skip-grant-tables &
    # 为了安全可以这样禁止远程连接
    mysqld_safe --skip-grant-tables --skip-networking &
    # 使用mysql连接server
    mysql -p
    # 更改密码
    update mysql.user set authentication_string=password('123qwe') where user='root' and Host = 'localhost';
    # 新版的mysql数据库下的user表中已经没有Password字段了,而是将加密后的用户密码存储于authentication_string字段
    flush privileges;
    quit;
    # 也可以使用alter user:
    alter user 'root'@'localhost' identified by '123';
    # 也可以这样
    set password for 'root'@'localhost'=password('123');
    

    d.mysql5.7自动初始化root密码

    # 确保mysql是启动的
    defaultmysqlpwd=`grep 'A temporary password' /var/log/mysqld.log | awk -F "root@localhost: " '{ print $2}'`
    /usr/bin/mysql -uroot -p"${defaultmysqlpwd}" --connect-expired-password <<EOF
    ALTER USER 'root'@'localhost' IDENTIFIED BY '123456Aa?';
    EOF
    

    搭建参考这篇:https://blog.csdn.net/z13615480737/article/details/80019881

    连接报111:https://www.cnblogs.com/ximalaya/p/6711792.html

    忘记root密码:https://www.cnblogs.com/xiaotengyi/p/5458731.html

    自动初始化root密码:https://www.cnblogs.com/fb010001/p/9134742.html

  • 相关阅读:
    vi常用命令学习
    [Oracle]约束(constraint)
    [Oracle]高水位标记(HWM)
    线性表&顺序线性表
    ERP,ARP瘦身并如何删除。
    Oracle 如何开启归档模式
    oracle9i的erp数据库无法正常关闭的解决方法。
    C语言学习之assert
    ORA-00257 archiver error的处理
    单利与复利
  • 原文地址:https://www.cnblogs.com/fawaikuangtu123/p/10342260.html
Copyright © 2011-2022 走看看