zoukankan      html  css  js  c++  java
  • 装个Mysql怎么就这么难?

      2020/5/20

    程序员是没有女朋友的~~

    声明:这篇文章是我第一次安装MySQL,主要记录了安装的艰辛过程,内容很凌乱,不适合作为参考。

    CentOS 6.10安装MySQL一直出问题,换了各种不同的版本,装了又卸载,卸载了又继续重装,心累~~

    问题一:最开始安装的MySQL5.7.30,能够顺利安装,但是在hive中配置了mysql驱动后,hive一直不能正常使用,不知道哪里出了问题,有可能是mysql权限的问题,一直解决不好。

        于是我想着换个版本低一点的MySQL试试。

    问题二:换了个低版本的,启动mysql服务,错误提示 ---->  mysqld :未被识别的服务。查了一下原因,是因为配置文件 /etc/init.d 中不存在 mysqld 命令。

        按照网上的解决办法:1) 使用    “find  / -name mysql.server”  命令全盘搜索找到mysql.server 文件

                  2)copy mysql.server  到  /etc/init.d  下,重命名为 mysqld。

        但是!!!

        

        什么也找不到~~

        我再查原因:

        

        显示我根本就没有安装msyql。

        啥原因啊?我明明就用 rpm  -ivh Mysql-*****.rpm 安装了呀!

        再查原因,说是 MySQL 里面的安装文件是有依赖关系的,如果安装顺序不正确,文件无法正常安装。妈蛋,那我重新安装再试试。

        先说说安装文件如下:

        

         其中 server 是服务器,client 是客户端,devel是安装PHP等依赖于Mysql的组件包。

        embedded是MySQL的嵌入式版本,shared是共享库,shared-compat是为了兼容老版本的共享库。test是测试组件。

        但是,我把上面的所有文件都安装完了,使用 rpm -qa | grep mysql  命令,还是什么都找不到。

        继续!

        原来是要用 rpm  -qa |grep  -i mysql  命令。算是可以找到文件了:

          

        原因是 Linux 区分大小写,给 grep 命令加上 -i  匹配大小写即可。

        其实,只需要安装 server 和 client 即可。

    看到很多MySQL的安装教程,都是要先创建mysql用户和用户组,这是为啥呢?

    首先,作为我个人学习而言,创建MySQL用户和用户组是可选的,非必要的,直接使用当前用户也是ok的。

    这样做的目的是提高系统的安全性,当别人黑了你的数据库的时候,别人得到的权限是这个mysql账号,而不是root账号。

    作为一个初学者,刚开始学习就迎面袭来这么多问题,实在是太不友好了~~

    但是,从这些大大小小的问题中,我感觉自己也一点一点地积累到了很多东西!

    我觉得应该先熟悉一下MySQL的默认安装路径,找什么文件也方便一点:

        

    Linux下MySQL启动方式 了解一下:

        1) mysqld   

    • 启动mysql服务器:./mysqld --defaults-file=/etc/my.cnf --user=root
    • 一般的,我们通过这种方式手动的调用mysqld,如果不是出去调试的目的,我们一般都不这样做。这种方式如果启动失败的话,错误信息只会从终端输出,而不是记录在错误日志文件中,这样,如果mysql崩溃的话我们也不知道原因,所以这种启动方式一般不用在生产环境中,而一般在调试(debug)系统的时候用到。
        2)mysqld_safe 
    • 启动mysql服务器:./mysqld_safe --defaults-file=/etc/my.cnf --user=root &
    • mysqld_safe是一个启动脚本,该脚本会调用mysqld启动,如果启动出错,会将错误信息记录到错误日志中,mysqld_safe启动mysqld和monitor mysqld两个进程,这样如果出现mysqld进程异常终止的情况,mysqld_safe会重启mysqld进程。
        3) mysql.server
        service mysql.server    start  /  stop  /  status
        mysql.server 同样是一个启动脚本,调用mysqld_safe 脚本,它的执行文件在$MYSQL_BASE/share/mysql/mysql.server 和 support-files/mysql.server。

        4)mysqld_multi

        多实例启动,配置不同的端口和配置文件。

    继续吧~~

        

        继续报错。

        

         说让删了 /var/lock/subsys/mysql  文件。但是还是不行:

        

     先不管了,先来了解一下什么是 PID文件吧!

        PID 即 Process ID,进程ID。MySQL pid 文件记录的是当前mysqld 进程的pid。

         1、未指定pid文件时,pid文件默认名为   主机名.pid, 存放的路径在默认 MySQL的数据目录。通过mysqld_safe 启动MySQL时,mysqld_safe 会检查pid 文件,如果pid文件不存在,不做处理;如果文件存在且pid 已占用,则报错 “ A   mysqld process already exists”;如果文件存在,但 pid 未占用,则删除 pid 文件。

        2、查看 MySQL 的源码可以知道,mysqld 启动后会通过 create_pid_file 函数新建 pid 文件,通过 getpid() 获取当前进程 pid 并将 pid 写入 pid 文件。

        3、因此,通过 mysqld_safe 启动时, MySQL pid 文件的作用是:在数据文件是同一份,但端口不同的情况下,防止同一个数据库被启动多次。

    继续~~这里补充一下 MySQL卸载的步骤:

        1)找到以rpm包安装的MySQL

        

         2)rpm  -e  命令卸载。    --nodeps  去除依赖关系。

        

         3)查看残余MySQL文件

        

         4)将这些文件删除

        

    在重新安装 MySQL-server 的时候,发现报错如下:

        

        说系统中已经存在了my.cnf 文件。那么my.cnf 文件是个什么文件呢?

        它是Linux中 Mysql 的配置文件,一般会在 /etc/my.cnf ,  /etc/mysql/my.cnf  

        既然新的配置文件被改成了 my-new.cnf  ,那我想着就要改一下。

  • 相关阅读:
    JS简单实现滚动自动加载新内容(懒加载)
    npm install报错Unhandled rejection RangeError: Maximum call stack size exceededill install
    原生CSS设置网站主题色—CSS变量赋值
    JS将日期转为距现在的时间长度
    JS将日期转为距现在的时间长度
    axios简单理解
    axios简单理解
    简单配置umiJS学习笔记
    npm install 提示权限不足 Error: EPERM: operation not permitted, unlink XXX
    基于实体模型开发主题管理简析
  • 原文地址:https://www.cnblogs.com/guan-zl/p/12923516.html
Copyright © 2011-2022 走看看