Linux CentOS7.X-安装mysql5.7数据库(安装包tar.gz)


一、下载对应版本的mysql  

  1、官网下载压缩安装包。

  进入到mysql官网下载自己对应版本的mysql,下载地址:https://dev.mysql.com/downloads/mysql/5.7.html#downloads,选择Linux的通用版本,64位,并且经过了压缩的安装包(说明:tar表示是安装包,非安装程序,gz表示是压缩过的安装包)。

  我这里下载mysql-5.7.25-linux-glibc2.12-x86_64.tar.gz版本。

  2、在Linux中通过命令下载。

二、环境配置

  1、查看操作系统位数:getconf LONG_BIT;

  2、查看系统是否已经安装mariaDB:rpm -qa|grep mariaDB

    如果已经安装,则删除。mariaDB是mysql的一个分支,兼容mysql。

    

  3、删除已经安装的mariaDB

 三、安装mysql

  1、解压mysql压缩安装包

  • 解压安装包:tar -xzvf  mysql-5.7.37-linux-glibc2.12-x86_64.tar.gz

    xzvf参数的说明:

      x:表示解压;

      z:表示压缩方式;

      v:显示解压过程;

      f:表示后面接文件,必须。

  • 修改解压后的文件夹名称:mv mysql-5.7.37-linux-glibc2.12-x86_64  mysql
  • 移动解压出来的文件夹,改名后的mysql,移动到: /usr/local下 

  2、检查mysql组和用户是否存

    cat  /etc/group|grep mysql

    cat /etc/password|grep mysql

   3、不存在,则添加

    添加用户组:groupadd mysql

    添加用户:useradd -r -g mysql mysql

  4、创建data目录

     进入mysql目录,cd /usr/local/mysql   

     创建data目录,mkdir data

  5、更改mysql用户组、用户、权限

     为保障mysql用户有足够的权限,我们需要将mysql目录下所有目录及文件夹的所属用户组和用户给到mysql:mysql,并让mysql用户具有相应的权限

     更改用户组及用户:chown -R mysql:mysql /usr/local/mysql

     更改权限:chmod -R 755 /usr/local/mysql

       小知识:777代表具体权限,使用cl l可查看权限,rwx是三种权限,分别对应421

  6、编辑配置文件/etc/my.cnf

     如果该目录下没有my.cnf文件,则可以新建一个同名文件,并进行编辑。

        vim /etc/my.cnf

        编辑内容如下:

     

  [mysqld]

  #character

  character-set-server=utf8

  collation-server=utf8_general_ci

  datadir=/usr/local/mysql/data

  port = 3306
  sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
  symbolic-links=0
  max_connections=600
  innodb_file_per_table=1
  lower_case_table_names=1

  [mysqld_safe]
  datadir=/usr/local/mysql/data
  log-error=/usr/local/mysql/data/error.log
  pid-file=/usr/local/mysql/data/mysql.pid
  user=mysql
  tmpdir=/tmp

   7、初始化mysql

  进入mysql的bin目录:cd /usr/local/mysql/bin

  进行初始化:     ./mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data     

       注意:必须要注意这里的初始密码,后面要用。如果此处初始化报错了,需要重新初始,可删除data目录,调整出问题的地方后,重新给相应的权限和更改用户、用户组,重新初始化。

  8、测试启动mysql服务

  /usr/local/mysql/support-files/mysql.server start

  注意:启用时,可能报如下错误:Starting MySQL. ERROR! The server quit without updating PID file (/usr/local/mysql/data/localhost.localdomain.pid).

                  解决方法:编辑/etc/init.d/mysql,找到start模块,添加--user=root到mysqld_safe 即可(还可能是因为其他原因,大部分原因网上可查)。

    9、添加软连接,并重启mysql服务      

      ln -s /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
      ln -s /usr/local/mysql/bin/mysql /usr/bin/mysql

      service mysql restart

         10、登录mysql

      使用初始密码登录系统,mysql -u root -p

       11、修改密码、取消过期

      查看user表信息:

        use mysql;

        desc user;

      update user set authentication_string == password('用户密码'), password_expired='N'  where user = 'root'

      重启mysql服务。

      注意:a.如果在重启服务的时候,提示Access denied for user ‘root’@‘localhost’(using password: YES)或者提示(You must reset your password using ALTER USER),则按照以下

          关闭mysql服务,service mysql  stop。可以通过service mysql statyus查看mysql服务的状态。

          进入safe模式。进入mysql安装目录的bin目录, ./mysqld_safe --skip-grant-tables

          另起一个客户端,使用root 账户无密码登陆,进行修改密码。

            mysql -u root

            use mysql;

            使用sql语句,修改密码,并设置密码不过期(因为默认是过期的)。update user set authentication_string == password('用户密码'), password_expired='N'  where user = 'root';

            然后使用select authentication_string,password_expired from user where user='root';查看以下修改结果。

            更新权限:flush privileges

            quit;退出

            重启服务。(service mysql stop)             (service mysql start)。这里如果无法启动服务,可以选择重启系统,再启动mysql服务。

            最后使用修改后的新密码,重新连接数据库(mysql -u root -p)。

    12、开放远程连接

       use mysql; 

      update user set user.Host='%' where user.User='root';      

      flush privileges;

      quit;

    13、设置开机自动启动     

      将服务文件拷贝到init.d下,并重命名为mysql

        cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld

      赋予可执行权限        

        chmod +x /etc/init.d/mysqld

      添加服务                    

        chkconfig --add mysqld

      显示服务列表

        chkconfig --list