ibethfy

一、环境准备,准备一台机器搭建Mycat,四台机器搭建Mysql主从环境。(暂时不考虑Mycat的高可用问题)

  1、环境准备

  • 四个Linux环境,一个安装Mycat服务,其余四台机器分别作为两套一主一从。
  • 环境分别为:192.167.3.170-mycat;192.167.3.171-mysql主  192.167.3.172-mysql从;192.167.3.173-mysql主  192.167.3.174-mysql从。
  • 每台linux服务器安装JDK。安装步骤如下:  
    • mkdir /usr/local/java
    • cp jdk-11.tar.gz /usr/local/java
    • cd /usr/local/java
    • tar -zxvf jdk-11.tar.gz
    • vi /etc/profile
    • 在profile最后加入:export JAVA_HOME=/usr/local/java/jdk-11(解压后实际路径) export JRE_HOME=$JAVA_HOME/jre export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib/rt.jar export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
    • source /etc/profile
    • java -version,测试是否安装成功。

  2、安装mysql8.0

  • 首先需要在192.167.3.171上安装JDK。
  • 下载mysql安装包,https://dev.mysql.com/downloads/,找到以下页面下载。

    

 

    

    • 下载后放到linux系统中
    • 官网说需要先查看本机是否已安装mysql,删除mysql这里不介绍。
    • yum install libaio  yum install openssl,安装mysql所需的软件包:libaiohe openssl。
    • tar -xvf mysql-8.0.13-linux-glibc2.12-x86_64.tar.xz,解压。
    • mv mysql-8.0.13-linux-glibc2.12-x86_64 /usr/local/mysql,将解压文件移动到local下。
    • groupadd mysql
    • useradd -r -g mysql -s /bin/false mysql
    • cd /usr/local/mysql
    • mkdir mysql-files
    • chown mysql:mysql mysql-files
    • chmod 750 mysql-files
    • bin/mysqld --initialize --user=mysql,初始化数据库,注意此处随机生成的密码,第一次登陆mysql的时候要使用。
    • bin/mysql_ssl_rsa_setup,安装ssl。
    • cp support-files/mysql.server /etc/init.d/mysql.server    将服务文件复制到开机启动目录,实现服务开机自启动。
    • bin/mysqld_safe --user=mysql &     开启服务,&是后台运行的意思,执行命令之后,终端会卡在一个位置,再按一下Enter即可。
    • 如果上面命令报错,什么log,pid文件未找到之类的,就需要执行下面方法。由于mysql服务启动时,会去读取/etc/my.cnf文件中的配置内容,我们打开文件来看,文件内容如下(我已修改):

       原来的内容地址就是启动mysql服务时报错的路径,我们可以知道,文件不存在问题导致启动失败。这时,就需要新建文件,并设置文件权限了。我这里修改了红框内的路径,具体命令如下:  

      • cd /usr/local/mysql/mysql-files
      • mkdir log ;  mkdir pid
      • touch log/mysql.log ; touch pid/mysql.pid
      • cd /usr/local/mysql
      • chown -R mysql:mysql mysql-files
      • chmod -R 750 mysql-files
      • 然后再次执行:bin/mysqld_safe --user=mysql &
    • bin/mysql -uroot -p   登陆mysql,回车后粘贴之前初始密码。
    • 如果登陆时报错,错误如下图,然后,去查看/tmp下面的文件,发现确实没有mysql.sock文件,本地用户登录时使用socket登陆,所以需要这样一个文件,那好,就找一个呗,执行  find / -name mysql.sock,找到在/var/lib/mysql下面有一个文件,然后,我尝试cp到tmp下,发现失败,那行,我ln一个呗,ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock,然后再尝试登陆,有一台机器就可以了,另一台始终不行。那行,我指定行了吧,用以下命令登陆:mysql -uroot -p -S /var/lib/mysql/mysql.sock,试了下可以,那就这样吧!
  •     

    • ALTER USER 'root'@'localhost' IDENTIFIED BY 'ibethfy;
    • flush privileges
    • 执行完成后,我又想使用navicat登陆,那好,试试呗,navicat连接直接报找不到服务,2003 cannot。。。。。,行嘛,排除原因,总结如下:

                  1、建立供外部连接的mysql用户。

        • mysql -uroot -pibethfy -s /var/lib/mysql/mysql.sock
        • create user 'ibethfy'@'%' identified by 'ibethfy';
        • grant all on *.* to 'ibethfy'@'%';     注意,mysql8的grant语句和之前版本有差别。
        • flush privileges;

                       2、防火墙关了,我用的centos。

        • firewall-cmd --state          查看防火墙状态,发现时running;
        • systemctl stop firewalld.service     关闭防火墙
        • firewall-cmd --state         再次查看,发现not running;

                     然后再用navicat连接,好嘛,又报错,caching-sha2-password,看来一下,应该是mysql的加密策略变了,navicat版本没跟上呗,那行,执行下面命令,然后再连接,没问题了!  

        • mysql -uroot -pibethfy -s /var/lib/mysql/mysql.sock
        • alter user 'ibethfy'@'%' identified by 'ibethfy' password expire never;
        • alter user 'ibethfy'@'%' identified with mysql_native_password by 'ibethfy';
        • flush privileges;  
    • ps -ef |grep mysql,可以看到mysql服务有两个,mysqld_safe和mysqld。说明启动成功了。
    • 大家在linux装mysql8.0的时候,如果按照步骤来,还出现问题,就分析一下,主要导致的一些原因就是权限问题和文件问题,依次解决一下再试试。

  3、之后我还会装mysql主从,mycat分库分表等,先把这个mysql8安装分享出来,给大家一些参考,毕竟我自己踩了很多坑,搞了好久才弄清楚,后面的内容之后补上。

相关文章:

猜你喜欢
相关资源
相似解决方案