zoukankan      html  css  js  c++  java
  • mysql 开发进阶篇系列 29 数据库二进制包安装

    概述  

      对于二进制安装,优点是可以安装到任何路径下,灵活性好,一台服务器可以安装多个mysql。缺点是已经绎过编译,性能不如源码编译得好,不能灵活定制编译参数。如果用户即不想安装最简单却不够灵活的RPM包,又不想安装复杂费时的源码包,那么已编译好的二进制包将是最好的选择。

    一.步骤1: 解压glib包

    -- 在 /usr/local 下创建一个mysql文件夹,用来存放
    [root@hsr local]# mkdir mysql
    [root@hsr local]# ls
    bin  etc  games  include  lib  lib64  libexec  mysql  sbin  share  src
    
    -- 在原有/usr/tool目录将gz压缩包解压 [root@hsr tool]# tar -zxvf mysql-5.7.23-linux-glibc2.12-x86_64.tar.gz mysql-5.7.23-linux-glibc2.12-x86_64/bin/myisam_ftdump mysql-5.7.23-linux-glibc2.12-x86_64/bin/myisamchk mysql-5.7.23-linux-glibc2.12-x86_64/bin/myisamlog mysql-5.7.23-linux-glibc2.12-x86_64/bin/myisampack mysql-5.7.23-linux-glibc2.12-x86_64/bin/mysql mysql-5.7.23-linux-glibc2.12-x86_64/bin/mysql_client_test_embedded mysql-5.7.23-linux-glibc2.12-x86_64/bin/mysql_config_editor .....
    --将解压的文件复制到/usr/local/mysql目录下 [root@hsr tool]# sudo cp -r mysql-5.7.23-linux-glibc2.12-x86_64 /usr/local/mysql
    --在mysql-->
    mysql-5.7.23-linux-glibc2.12-x86_64路径下 解压的文件共9个 目录如下:
    [root@hsr mysql]#
    ls mysql-5.7.23-linux-glibc2.12-x86_64 bin COPYING docs include lib man README share support-files

      注意:mysql-5.7.23-linux-glibc2.12-x86_64目录层次要去掉,变为/usr/local/mysql 下的9个目录,在文章后面会去掉这层。

      

    二. 步骤2:    

       2.1 添加mysql用户 useradd -r -g 用户名 用户组

    [root@hsr mysql]# groupadd mysql
    [root@hsr mysql]# useradd -r -g mysql mysql

      2.2 切换到 /usr/local/mysql 目录下,改变目录拥有者为mysql

    [root@hsr mysql]# chown -R  mysql.mysql /usr/local/mysql

      2.3 新环境安装libaio包 mysql 依赖于libaio

    [root@hsr mysqld]# yum search libaio

    三 步骤3:  

      安装mysql,使用 --initialize,basedir 基础目录,datadir 为数据目录。

    [root@hsr ~]# cd /usr/local/mysql/mysql-5.7.23-linux-glibc2.12-x86_64/bin
    [root@hsr bin]# ./mysqld  --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
    2018-08-23T06:56:21.157088Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
    2018-08-23T06:56:21.157246Z 0 [ERROR] Can't find error-message file '/usr/local/mysql/share/errmsg.sys'. Check error-message file location and 'lc-messages-dir' configuration directive.
    2018-08-23T06:56:26.287087Z 0 [Warning] InnoDB: New log files created, LSN=45790
    2018-08-23T06:56:27.059913Z 0 [Warning] InnoDB: Creating foreign key constraint system tables.
    2018-08-23T06:56:27.138616Z 0 [Warning] No existing UUID has been found, so we assume that this is the first time that this server has been started. Generating a new UUID: a7e28575-a6a1-11e8-af13-000c29affb65.
    2018-08-23T06:56:27.154064Z 0 [Warning] Gtid table is not ready to be used. Table 'mysql.gtid_executed' cannot be opened.
    2018-08-23T06:56:27.155635Z 1 [Note] A temporary password is generated for root@localhost: ro0ssOGT?ocf

    四步骤4:

      4.1 创建RSA private key。

    [root@hsr bin]# bin/mysql_ssl_rsa_setup --datadir=/usr/local/mysql/data

      

      4.2 修改当前目录拥有者为 root 用户,修改data 目录拥有者为 mysql

    [root@hsr bin]# chown -R root:root /usr/local/mysql
    [root@hsr bin]# chown -R mysql:mysql /usr/local/mysql/data

     五.步骤5 配置mysql(mysql.server)和my.cnf文件

    --检查 etc/my.cnf文件是否存在 (二进制安装,默认配置文件在/etc/my.cnf)
        [root@hsr etc]# find -name  my.cnf
        ./my.cnf
    --将support-files 目录下的mysql.server文件复制到etc/init.d下 [root@hsr ~]# cd /usr/local/mysql/mysql-5.7.23-linux-glibc2.12-x86_64/support-files [root@hsr support-files]# cp mysql.server /etc/init.d/mysql
    -- 配置/etc/init.d/mysql服务文件 添加basedir和datadir [root@hsr support-files]# vim /etc/init.d/mysql

        

       修改my.cnf  配置以下四个参数(注意:chkconfig -- level 35 mysqld on 不要加上,后面报错,又得去掉)
        

     六.步骤6 启动mysql

    [root@hsr bin]# service mysql start
    /etc/init.d/mysql: line 239: my_print_defaults: command not found
        Starting MySQL ERROR! Couldn't find MySQL server (/usr/local/mysql/bin/mysqld_safe) 
    
    --提示未找到路径,需要把"mysql-5.7.23-linux-glibc2.12-x86_64" 文件夹去掉,使用mv 将里面的文件移到/usr/locl/mysql下,共9个文件
    [root@hsr bin]# mv /usr/local/mysql/mysql-5.7.23-linux-glibc2.12-x86_64/README /usr/local/mysql
    [root@hsr bin]# mv /usr/local/mysql/mysql-5.7.23-linux-glibc2.12-x86_64/COPYING /usr/local/mysql
    [root@hsr bin]# mv /usr/local/mysql/mysql-5.7.23-linux-glibc2.12-x86_64/support-files /usr/local/mysql
    [root@hsr bin]# mv /usr/local/mysql/mysql-5.7.23-linux-glibc2.12-x86_64/share /usr/local/mysql
    [root@hsr bin]# mv /usr/local/mysql/mysql-5.7.23-linux-glibc2.12-x86_64/man /usr/local/mysql
    [root@hsr bin]# mv /usr/local/mysql/mysql-5.7.23-linux-glibc2.12-x86_64/lib /usr/local/mysql
    [root@hsr bin]# mv /usr/local/mysql/mysql-5.7.23-linux-glibc2.12-x86_64/include /usr/local/mysql
    [root@hsr bin]# mv /usr/local/mysql/mysql-5.7.23-linux-glibc2.12-x86_64/docs /usr/local/mysql
    [root@hsr bin]# mv /usr/local/mysql/mysql-5.7.23-linux-glibc2.12-x86_64/bin /usr/local/mysql
    -- 再启动
    [root@hsr bin]# service mysql start
    Starting MySQL.2018-08-24T01:06:20.545225Z mysqld_safe error: log-error set to '/var/log/mariadb/mariadb.log', however file don't exists. Create writable for user 'mysql'.
     ERROR! The server quit without updating PID file (/usr/local/mysql/data/hsr.pid).
    
    -- 提示/var/log/mariadb/mariadb.log 不存在, 打开my.cnf 能看到定义的默认路径
    [mysqld_safe]
    log-error=/var/log/mariadb/mariadb.log
    pid-file=/var/run/mariadb/mariadb.pid
    
    --创建目录 给权限
    [root@hsr bin]# mkdir /var/log/mariadb 
    [root@hsr bin]# touch /var/log/mariadb/mariadb.log 
    [root@hsr bin]# chown -R mysql:mysql  /var/log/mariadb/
    -- 再启动
    [root@hsr bin]# service mysql start
    Starting MySQL.... ERROR! The server quit without updating PID file (/usr/local/mysql/data/hsr.pid).
    
    -- 错误信息是hsr.pid进程出问题,先查看下日志
    [root@hsr ~]# cat /var/log/mariadb/mariadb.log

      
       在my.cnf中注释上面参数(#chkconfig --level 35 mysqld on),再启动
      
      上图意思是不能创建mysql.sock.lock 文件,一般是权限不足,如下设置好权限,启动成功
      

    七 登录mysql

    [root@hsr ~]# mysql -u root -p
    bash: mysql: 未找到命令

      未找到命令,是由于系统默认会查找/usr/bin下的命令,如果这个命令不在这个目录下,就会找不到命令,需要映射一个链接到/usr/bin目录下,相当于建立一个链接文件。

    [root@hsr ~]#  ln -s /usr/local/mysql/bin/mysql /usr/bin
    [root@hsr ~]# mysql -u -root -p
    ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
    
    --错误信息是不能连接到本地的socket ,系统默认找到了/tmp目录下,需要设置链接文件
    [root@hsr tmp]# ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock
    [root@hsr ~]# mysql -u -root -p
    Enter password:

     八. 设置密码  

      8.1 打开my.cnf文件,添加skip-grant-tables,来重置密码,如下所示
        
      8.2 启动服务,再次登录,在输入密码处按回车键进入。

    [root@hsr ~]# vim /etc/my.cnf
    [root@hsr ~]# service mysql restart
    Shutting down MySQL.. SUCCESS! 
    Starting MySQL. SUCCESS! 
    [root@hsr ~]# mysql -u root -p
    Enter password: 
    Welcome to the MySQL monitor.  Commands end with ; or g.
    Your MySQL connection id is 2
    Server version: 5.7.23

      8.3 进入mysql后,修改密码

    mysql> use mysql;
    Reading table information for completion of table and column names
    You can turn off this feature to get a quicker startup with -A
    
    Database changed
    
    mysql> update user set authentication_string=password('123456') where user='root';
    Query OK, 1 row affected, 1 warning (0.00 sec)
    Rows matched: 1  Changed: 1  Warnings: 1

      退出mysql>quit;  编辑 my.cnf 注释掉#skip-grant-tables

     8.4 重启mysql服务,输入修改后的密码(123456)进入

    [root@hsr ~]# service mysql restart
    Shutting down MySQL.. SUCCESS! 
    Starting MySQL. SUCCESS! 
    [root@hsr ~]# mysql -u root -p
    Enter password: 
    Welcome to the MySQL monitor.  Commands end with ; or g.
    Your MySQL connection id is 2
    Server version: 5.7.23

     九 远程登录

    -- 登录到mysql后设置权限
    mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION; 
    ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
    --  再设置密码
    mysql> SET PASSWORD = PASSWORD('123456');
    Query OK, 0 rows affected, 1 warning (0.00 sec)
    -- 设置权限
    mysql> ALTER USER 'root'@'localhost' PASSWORD EXPIRE NEVER;
    Query OK, 0 rows affected (0.00 sec)
    -- 刷新权限 
    mysql>  flush privileges;
    Query OK, 0 rows affected (0.01 sec)
    -- 设置远程登录权限
    mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION; 
    Query OK, 0 rows affected, 1 warning (0.00 sec)

      -- 在my.cnf中 添加端口,重启服务
      

    -- 测试端口是否打开
    [root@hsr ~]#  firewall-cmd    --query-port=3306/tcp
    no
    -- 防火墙设置
    [root@hsr ~]# firewall-cmd --zone=public --add-port=3306/tcp --permanent
    success
    -- 重新加载
    [root@hsr ~]# firewall-cmd --reload
    success
    -- 再次测试端口
    [root@hsr ~]# firewall-cmd    --query-port=3306/tcp
    yes

      -- 在windows端拼通成功
      

      --- 最后使用SQLyog连接成功
      
      

      

  • 相关阅读:
    Windows使用SCHTASKS 命令执行定时任务
    window10设置定时任务
    uiautomator2+python自动化测试1-环境准备
    uiautomator2+python自动化测试2-查看app页面元素利器weditor
    APPIUM 自带的webdriveragent
    使用 mitmproxy + python 做拦截代理
    mitmproxy 实战
    深入学习mitmproxy
    将博客搬至CSDN
    CS231N Assignment5 图像分类练习
  • 原文地址:https://www.cnblogs.com/MrHSR/p/9529870.html
Copyright © 2011-2022 走看看