zoukankan      html  css  js  c++  java
  • CentOs服务器下安装两个个MySql数据库踩坑日记

            背景: 其实并非本意非要安装两个服务器,奈何不知道前面项目的数据库密码,并且数据库版本是8.x,另外还有项目在上面运行,前面的人把数据库装到了系统盘,留下了500G的数据盘没用,所以本着折腾的精神,就开始了踩坑之旅,话说折腾了快两天了,终于把这个问题搞定了,虽然还有点迷糊,不过对于我这新手而言太不容易了。下面做个记录,权且做个纪念。

    1.第一个数据库安装

    好了,不多说废话了,开始踩坑之旅,虽说是安装两个数据库,不过,第一个数据库的安装有很多办法,我就不多举例子了,推荐几个链接给大家。

    官方的yum安装教程:https://dev.mysql.com/doc/refman/5.7/en/linux-installation-yum-repo.html

    2.第二个数据库安装(使用tar.gz安装包)

    2.1 准备工作:下载tar.gz,链接:https://dev.mysql.com/downloads/mysql/5.7.html#downloads

    注意根据自己服务器的系统和进行下载

    记得下载的tar.gz包保存的位置。稍后上传的时候要用到。

    2.2 将下载的xxxx.tar.gz包向办法上传到服务器,我使用的是WinSCP工具上传的。

    2.3 解压缩下载的xxxx.tar.gz文件,并重命名,注意自己存放的文件夹,我使用的是xshell来操作的。

    使用的命令如下:

    1.  
      [root@VM_0_17_centos ~]# cd /xs-data/ # cd进入文件夹下
    2.  
      [root@VM_0_17_centos xs-data]# ls # 查看所有文件和文件夹
    3.  
      [root@VM_0_17_centos xs-data]# tar -zxvf mysql-5.7.23-linux-glibc2.12-x86_64.tar.gz # 解压xxx.tar.gz包
    4.  
      [root@VM_0_17_centos xs-data]# mv mysql-5.7.23-linux-glibc2.12-x86_64 mysql-5.7 # 重命名文件夹为mysql-5.7,可自定义

    2.3  在mysql-5.7下新增文件夹data,var,etc备用

    1.  
      [root@VM_0_17_centos xs-data]# ls
    2.  
      mysql-5.7 mysql-5.7.23-linux-glibc2.12-x86_64.tar.gz svn
    3.  
      [root@VM_0_17_centos xs-data]# cd mysql-5.7/
    4.  
      [root@VM_0_17_centos mysql-5.7]# ls
    5.  
      bin COPYING docs include lib man README share support-files
    6.  
      [root@VM_0_17_centos mysql-5.7]# mkdir data
    7.  
      [root@VM_0_17_centos mysql-5.7]# mkdir var
    8.  
      [root@VM_0_17_centos mysql-5.7]# mkdir etc
    9.  
      [root@VM_0_17_centos mysql-5.7]# ls
    10.  
      bin COPYING data docs etc include lib man README share support-files var

    2.4 创建数据库配置文件,一般为my.cnf 。其实在根目录  /etc/my.cnf 有这个文件,所以只需要复制就行了,如果根目录下没有的话,就需要使用touch命令新建该文件了,我把这个文件放到刚新建的etc文件夹下。

    1.  
      [root@VM_0_17_centos mysql-5.7]# ls /etc/
    2.  
      [root@VM_0_17_centos mysql-5.7]# cp /etc/my.cnf etc/
    3.  
      [root@VM_0_17_centos mysql-5.7]# ls etc/
    4.  
      my.cnf

    2.5 编辑刚复制的my.cnf文件,由于我的服务器没有vim命令,所以我就使用vi命令了 vi etc/my.cnf 。编辑如下内容

    1.  
      basedir= /xs-data/mysql-5.7
    2.  
      datadir = /xs-data/mysql-5.7/data
    3.  
      port = 3308
    4.  
      socket = /xs-data/mysql-5.7/mysql.sock
    5.  
       
    6.  
      [client]
    7.  
      socket = /xs-data/mysql-5.7/mysql.sock
    8.  
       
    9.  
      #不区分大小写
    10.  
      lower_case_table_names = 1

    注意自己存放的文件夹,路径不要搞错了,我的是放在了xs-data下

    2.6 改变文件夹权限,使得mysql可以访问。

    1.  
      #groupadd mysql
    2.  
      #useradd mysql -g mysql
    3.  
      #chown -R mysql:mysql mysql-5.7/
    4.  
      #chmod -R 755 mysql-5.7/

    2.7 安装依赖包(非常重要的一步!!!!!)

    yum -y install make gcc-c++ cmake bison-devel ncurses ncurses-devel libaio-devel

    2.8 指定配置文件初始化

    [root@VM_0_17_centos mysql-5.7]# ./bin/mysqld --defaults-file=/xs-data/mysql-5.7/etc/my.cnf --initialize --user=mysql &

    注意执行该命令时候的位置

    2.9 初始化数据库

    ./bin/mysqld_safe --defaults-file=/xs-data/mysql-5.7/etc/my.cnf  --user=mysql &

     上面的命令注意结尾符号& ,接着执行mysql.server start,如果出现如下的问题,那就修改mysql.server文件

    1.  
      [root@VM_0_17_centos mysql-5.7]# ./support-files/mysql.server start
    2.  
      ./support-files/mysql.server: line 259: cd: /usr/local/mysql: No such file or directory
    3.  
      Starting MySQL ERROR! Couldn't find MySQL server (/usr/local/mysql/bin/mysqld_safe)

    使用vi support-files/mysql.server 可以打开mysql.server文件,修改两个地方如下

    修改好之后再执行 ./support-files/mysql.server start

    3.0 登录数据库修改密码。使用上一步得到的临时密码

    1.  
      第二个数据库必须使用进入
    2.  
      #./bin/mysql --socket=../mysql.sock --port=3308 -u root -p
    3.  
      使用初始化的时候得到的密码 qabmwvkGj4.;
    4.  
      进入后直接修改密码
    5.  
        mysql>alter user 'root'@'localhost' identified by '123456';
    6.  
        mysql>use mysql;
    7.  
        msyql>update user set user.Host='%' where user.User='root';
    8.  
        mysql>flush privileges;
    9.  
        mysql>quit

    至此第二个数据库的安装和修改工作已经完结了。

    3.1 关于数据库启动和停止的补充,偷个懒直接拷贝参考文章的。

     #mysql -u root --socket=/var/lib/mysql3307/mysql.sock --port=3307 -p
     因为两个数据库,需要置顶socket进行启动。第一次登陆没有密码,直接回车即可。 
     停止3307数据库
     #mysqladmin  -u root --socket=/var/lib/mysql3307/mysql.sock --port=3307 -p shutdown
     

    3.3 navicat连接测试

    使用以下命令 vi /etc/sysconfig/iptables 首先看下端口有没有开放

    =================================================================以下是安装 mysql5.0.96==============================================

    一、源码包安装mysql。       

    -------------预备工作----------      

    1:假如下载的文件名为:mysql-5.0.45.tar.gz      

    2:copy到 /usr/local/software下(软件包统一放置到该目录下)      

    3:groupadd mysql #添加mysql组      

    4:useradd -g mysql mysql -s /bin/false #创建用户mysql并加入到mysql组,不允许mysql用户直接登录系统

    mkdir -p /usr/local/mysql #创建MySQL安装目录

    mkdir -p /usr/local/mysql/var #创建MySQL数据库存放目录

    chown -R mysql:mysql /usr/local/mysql/var #设置MySQL数据库目录权限

    chown -R mysql:mysql /usr/local/mysql #设置MySQL数据库目录权限      

    5:cd /usr/local/software #进入到该目录         

    -----------------------编译过程(5.0.96不用编译,这一步略过)-----------------------     

     6:tar -zxvf mysql-5.0.45.tar.gz #解压后,在该目录下会出现一个同名的文件夹       

    7:cd /usr/local/software/mysql-5.0.45       

    8:./configure --prefix=/usr/local/mysql --with-charset=utf8 --with-collation=utf8_general_ci --with-extra-charsets=latin1      

    注意(参数讲解):

    --prefix=/usr/local/mysql ==> 指定mysql的安装目录。

    --with-charset=utf8 ==> 指定mysql的默认字符集

    --with-collation=utf8_general_ci ==> 指定mysql的默认字符集

    --with-extra-charsets=latin1 ==> 添加额外的编码,为了省事,一般就写all了

    9:make      

    10:make install      

    11:cp support-files/my-medium.cnf /etc/my.cnf #拷贝配置文件。如果/etc/my.cnf已存在,则先备份,再删除      

    12:vi /etc/my.cnf #将log-bin=mysql-bin注释掉(关闭binlog日志)        

    ----------------------------安装并初步配置mysql--------------------------       

    13:cd /usr/local/mysql       

    14:bin/mysql_install_db --user=mysql --datadir=/usr/local/mysql/var  --defaults-file=/www/server/mysql50/etc/my.cnf #安装系统数据库   

    15:bin/mysqld_safe  --defaults-file=/www/server/mysql50/etc/my.cnf   --user=mysql &  #启动mysql服务        也可以用./support_files/mysql.server  ,但要修改里面的basedir  与 datadir,conf 的

     如果报libnsl.so.1: cannot open shared object file: No such file or directory 就在/usr/lib64/中创建软链 libnsl.so.1:指向 libnsl.so.2.0.0

    报错starting MySQL.The server quit without updating PID file  *************.pid 是因为没有加sudo执行

     -----------------------------------------更改mysql的root用户密码----------------------------      

    16:bin/mysqladmin -uroot password 123456 #在mysql正常启动的情况下,更改root用户的登录密码       

    17:bin/mysql -uroot -p #输入此命令后,会提示你输入root用户密码123456      

    18:show databases; #如果查出所有数据库,说明mysql数据库已经成功安装。        

    ------------------------------------------------------把mysql加入到系统服务中(开机自启动)-------------------------------------       

    19:cp  /usr/local/mysql/share/mysql/mysql.server  /etc/init.d/mysqld                   

    chkconfig --add  mysqld #加入到系统服务中,就可以通过service mysqld start|stop|status|restart等进行管理,很是方便,就不用再到/usr/local/mysql5.0.45/bin/启动mysql了。

    注意: mysql.server ==>该脚本主要用于使用系统V-style运行目录的系统的启动和关闭,它通常安装到mysql下。mysql.server脚 本调用mysqld_safe来启动服务器。        

    ------------------------------------------------------------------配置 mysql环境变量------------------------------------------------      

    20:cd /root #回到你的个人主目录,我这里是用root登陆的              

    cp .bashrc .bashrc.bak #备份一下吧             

     vi .bashrc              

    在最后加入:export PATH=/usr/local/mysql/bin:$PATH:.              

    source ~/.bashrc #回到终端再输入此命令,以使刚修改的起作用,~代表用户主目录 source命令用法: source FileName 作用:在当前bash环境下读取并执行FileName中的命令。

             注:该命令通常用命令“.”来替代。 如:source .bash_rc 与 . .bash_rc 是等效的。 注意:source命令与shell scripts的区别是, source 在当前bash环境下执行命令,而scripts是启动一个子shell来执行命令。这样如果把设置环境变量(或 alias等等)的命令写进 scripts中,就只会影响子shell,无法改变当前的BASH,所以通过文件(命令列)设置环境变量 时,要用source 命令。              

    env #查看一下是否生效(显示系统中已存在的环境变量)      

    21:此是用来替换20步的一种方法             

     cp /usr/local/mysql/bin/mysql   /usr/bin/mysql  #把mysql常用的工具目录加入到系统变量目录中去,自己选择性加,这样做主要是可以直接运行该工具,而不需要切换到该 目录下,类似于添加环境变量了。

            ------------------------------------------------------------------------------- 让Linux开放3306端口-------------------------------------------       

    22:service iptables stop #关闭防火墙              

          vi /etc/sysconfig/iptables #编辑防火墙配置             

         -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT             

          service iptables start #开启防火墙         

    ------------------------------------------------------------------------------- 给root用户开启mysql远程访问权限--------------------------------------------      

    23:shutdown -hr now #重启虚拟机。             

    ps -ef | grep mysql #查看mysql是否已随开机启动,或者输入:service mysqld status。             

    mysql -uroot -p #进入mysql,并输入密码。              

    grant all on *.* to root@'%' identified by '123456';              #grant 权限 on 数据库名.表名 to 用户@登录主机 identified by "用户密码";             

     flush privileges; #为了开发方便,可以让root用户具有远程访问的权限(%就是允许远程登录的意思)              

    #最后,再附上一个很好用的mysql客户端,http://download.csdn.net/source/924456  

    二、默认的mysql数据库目录是 /usr/local/mysql/var        

    我们在安装时指定了安装目录为/usr/local/mysql,除了在这里安装所要的文件外,还有一部分用户常用的,可执行二进制文件被放到了/usr/bin中,其实,在/usr/local/mysql/bin下,全都有这些命令了,之所以要在/usr/bin中把那几个命令考过来,就是为了方便,相当于设置环境变量了,你可以echo $PATH一下,里面一定有/usr/bin这个值的。          明白了安装过程,删除mysql也就不足为难了

    grant all on *.* to root@'%' identified by 'your_password';   

    3.参考博客

    (1)centos7.0 安装多个5.7 mysql - u013317181的博客 - CSDN博客

    (2)linux一台服务器上装两个mysql数据库 - 追梦的博客 - CSDN博客

    Centos7 - mysql 5.5.62 tar.gz 方式安装

     

    安装准备

    Mariadb 去除

    由于CentOS7自带的是 Mariadb, 所以先来删除他吧...

    1. 查找版本

    # rpm -qa|grep mariadb

    执行命令后会出现类似 MariaDB-server-5.5.49-1.el7.centos.x86_64 之类的鬼..记住名字就行了.

    2. 删除

    # rpm -e --nodeps 上面查出来的文件名

    3. 删除配置文件

    # rm /etc/my.cnf

    安装包获取

    在官方直接找吧   MySQL Community Server 5.5.62

    选择 Linux - Generic 注意

    推送压缩包

    推送到虚拟机或者远程服务器, ftp 或者  rz, 或者直接图形界面拖动随你, 总之推上去就行了

    开始安装

    解压

    解压中注意如果出现EOF 报错之类的需要考虑是否压缩包文件损坏

    尝试更换压缩包或者重新推送压缩包

    tar -xvf mysql-5.5.62-linux-glibc2.12-x86_64.tar.gz

    复制到 local 

    mv mysql-5.5.62-linux-glibc2.12-x86_64 /usr/local

    修改文件夹

    cd /usr/local
    mv mysql-5.5.62-linux-glibc2.12-x86_64 mysql-5.5.62

     修改配置文件

    vi /etc/my.cnf
    复制代码
    [mysql]
    # 设置mysql客户端默认字符集
    default-character-set=utf8 
    socket=/var/lib/mysql/mysql.sock
    
    [mysqld]
    skip-name-resolve
    #设置3306端口
    port = 3306 
    
    socket=/var/lib/mysql/mysql.sock
    # 设置mysql的安装目录, 这里的目录一定要是你解压后并且改了名的目录哟..
    
    basedir=/usr/local/mysql-5.5.62
    # 设置mysql数据库的数据的存放目录, 这里的目录一定要是你解压后并且改了名的目录哟..
    
    datadir=/usr/local/mysql-5.5.62/data
    
    # 允许最大连接数
    max_connections=200
    
    # 服务端使用的字符集默认为8比特编码的latin1字符集
    character-set-server=utf8
    
    # 创建新表时将使用的默认存储引擎
    default-storage-engine=INNODB
    
    lower_case_table_name=1
    max_allowed_packet=16M
    复制代码

    切换目录到mysql中

    cd /usr/local/mysql-5.5.62

    添加用户组与用户

    注意 : 这里需要将目录切换到mysql目录下 也就是上一步的操作

    groupadd mysql
    useradd -g mysql mysql
    chown -R mysql:mysql ./

    安装mysql

    ./scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql-5.5.62/ --datadir=/usr/local/mysql-5.5.62/data/

     安装后会有如下的打印

    复制代码
    [root@yangtuo mysql-5.5.62]# ./scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql-5.5.62/ --datadir=/usr/local/mysql-5.5.62/data/
    Installing MySQL system tables...
    190616 17:56:34 [Warning] Using unique option prefix lower_case_table_name instead of lower_case_table_names is deprecated and will be removed in a future release. Please use the full name instead.
    190616 17:56:34 [Note] Ignoring --secure-file-priv value as server is running with --bootstrap.
    190616 17:56:34 [Note] /usr/local/mysql-5.5.62//bin/mysqld (mysqld 5.5.62) starting as process 73351 ...
    OK
    Filling help tables...
    190616 17:56:34 [Warning] Using unique option prefix lower_case_table_name instead of lower_case_table_names is deprecated and will be removed in a future release. Please use the full name instead.
    190616 17:56:34 [Note] Ignoring --secure-file-priv value as server is running with --bootstrap.
    190616 17:56:34 [Note] /usr/local/mysql-5.5.62//bin/mysqld (mysqld 5.5.62) starting as process 73359 ...
    OK
    
    To start mysqld at boot time you have to copy
    support-files/mysql.server to the right place for your system
    
    PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER !
    To do so, start the server, then issue the following commands:
    
    /usr/local/mysql-5.5.62//bin/mysqladmin -u root password 'new-password'
    /usr/local/mysql-5.5.62//bin/mysqladmin -u root -h 172.20.10.7
    192.168.122.1 password 'new-password'
    
    Alternatively you can run:
    /usr/local/mysql-5.5.62//bin/mysql_secure_installation
    
    which will also give you the option of removing the test
    databases and anonymous user created by default.  This is
    strongly recommended for production servers.
    
    See the manual for more instructions.
    
    You can start the MySQL daemon with:
    cd /usr/local/mysql-5.5.62/ ; /usr/local/mysql-5.5.62//bin/mysqld_safe &
    
    You can test the MySQL daemon with mysql-test-run.pl
    cd /usr/local/mysql-5.5.62//mysql-test ; perl mysql-test-run.pl
    
    Please report any problems at http://bugs.mysql.com/
    
    [root@yangtuo mysql-5.5.62]#
    复制代码

     以上到此已经安装成功了 mysql 还需要一些设置才可以正常运行

    安装配置

    配置Mysql

    复制代码
    chown -R mysql:mysql data
    
    chown 777 /etc.my.cnf
    
    cp ./support-files/mysql.server /etc/rc.d/init.d/mysqld
    
    chmod +x /etc/rc.d/init.d/mysqld
    
    chkconfig --add mysqld
    
    chkconfig --list mysqld
    
    mkdir /var/lib/mysql
    
    chmod 777 /var/lib/mysql
    复制代码

     

    开启服务

    service mysqld start

     

    设置PATH

    vi ~/.bash_profile

     在文件最后面加入以下内容,并使用:wq保存

    export PATH=$PATH:/usr/local/mysql-5.5.62/bin

    刷新PATH

    source ~/.bash_profile

    以上操作完成就既可以正常使用 mysql 了, 为了后期的方便使用, 我们还要进行一定的优化设置已经安全性设置等

    mysql 基本使用及设置

    登录mysql

    这时mysql没有密码, 当出现Enter password:时直接回车

    mysql -uroot -p

     

    修改root密码

    mysql> use mysql
    mysql> update user set password=password('需要设置的密码') where user='root' and host='localhost';
    mysql> flush privileges;

     

    配置远程登录

    mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '刚才设置的root密码' WITH GRANT OPTION;

    到此所有配置全部完毕. 可以使用远程工具进行登录了

  • 相关阅读:
    HTTP状态码
    MySQL的order by时区分大小写
    CopyOnWriteArrayList、CopyOnWriteArraySet、ConcurrentHashMap的实现原理和适用场景
    Map接口
    Python中创建守护进程
    df说磁盘空间满了, du说没有,到底谁是对的
    几种分布式文件系统对比
    Unity:控制粒子特效的移动方向
    创建NuGet包
    NuGet的简单使用
  • 原文地址:https://www.cnblogs.com/caicaizi/p/14314250.html
Copyright © 2011-2022 走看看