zoukankan      html  css  js  c++  java
  • 1.Mysql安装

    1.Mysql下载

      官网下载:https://dev.mysql.com/downloads/mysql/

      这里说明一下:通过作为DBA一般会下载Linux-Generic版本进行安装(Linux操作系统中),除非有特殊的场景需要用源码包安装,否则95%以上的都用二进制包安装,因为官方已有说明进行官方编译器编译后的二进制包安装的Mysql性能不会比人工手动编译的源码包安装的差!

    2.Mysq安装

      2.0 Mysql规划

        首先我们需要把mysql软件安装位置和mysql数据存储的位置分开,例如我们可以重新找一个新的磁盘专门存储mysql数据,具体看自己操作,比如我:将安装软件放在/appcation目录下  (该目录需要自己创建),然后创建一个软连接 ( ln -s  mysql安装目录的绝对路径     /usr/local/mysql )

      2.1 创建目录

        2.1.1  创建mysql软件安装目录,然后将Mysql的安装目录进行软连接

            -->mkdir   /appcation

            -->ln  -s  mysql安装目录的绝对路径     /usr/local/mysql

        2.2.2 创建mysql数据存储目录(如果是新磁盘会通过挂载实现,一般挂载点会使/data)

           数据存储本人一般会放在/data目录下(该目录需要自己创建:mkdir /data)

                2.2.3  授予权限

          2.2.3.1  创建一个mysql用户和用户组

               -->useadd -M  mysql -s /sbin/nologin  

          2.2.3.2  分别对上面的两个目录授权

              -->chown -R mysql.mysql    /appcation

              --> chown -R mysql.mysql   /data

         2.2.4  配置环境变量

              配置环境的变量的目的是可以在linux服务器下的任何一个路径下执行Mysql的各种命令,而不需要用Mysql的绝对路径去执行

              vim  /etc/profile

                  Mysql=/usr/local/mysql

                  PATH=$PATH:$Mysql/bin

                  export PATH              

           2.3  初始化

          注意初始化,我们一般分两种不同的情况

           5.6 版本     --> /mysql/scripts/mysql_install_db    --user=mysql    --basedir=/app/mysql    --datadir=/data

             5.7 版本      -->  mysqld --initialize  --user=mysql --basedir=mysql安装目录   --datadir=/data/mysql/data      ###这里会生成临时密码(该密码可以在错误日志中找到)

                                              --initialize-insecure:表示不用生成临时密码                      

      2.4 配置文件(最基础的配置,后面会有详细的)

      /etc/my.cnf
        [mysqld]
          user=mysql       basedir=       datadir=       server_id=1       port=3307
          log-file= ##根据自己的实际情况进行配置
          socket=
          pid-file=
         [mysql]       socket=/tmp/mysql.sock

    这里要重要说明一下:如果我们的服务器只运行单实例的Mysql服务的话,我们可以直接在/erc/my.cnf中进行如上配置,但是在生产上这种情况很少会发生,因为我们通常会在服务器上跑多实例Mysql
    因此,一般我们会在前面的数据目录下配置:/data/mysql/{3307,3308,3309,3310}/my.cnf ,这样我们就可以配置4个mysql实例了。

      2.5.mysql 启动

        mysql启动一般有两种:

          对于centos7以下的版本,我们一般会用sys 管理启动方式    ,首先我们去mysql的安装目录中找到/application/mysql/support-files目录,这个目录下面有一个mysql.serrver文件

          我们将它移动到/etc/init.d目录下并改名为myqld   -->  mv mysql.server  /etc/init.d/mysqld

          然后我们就可以通过命令  ----->  service  mysqld start/stop/status     进行启动/停止/查看状态

                  思考:centos6中怎样多实例启动Mysql服务?

                  对于centos7版本我们一般会用systemd方式管理

          添加一个文件在 /etc/systemd/system目录下 命名为mysqld.service,如果是多实例的话,可以命令为mysqld3307.service、mysqld3308.service等等。

            添加一下内容:

    [Unit]
    
    Description=MySQL Server
    Documentation=man:mysqld(8)
    Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
    After=network.target
    After=syslog.target
    
    [Install]
    WantedBy=multi-user.target
    
    [Service]。
    User=mysql
    Group=mysql
    ExecStart=/opt/mysql-5.7.18/bin/mysqld --defaults-file=/etc/my.cnf              //只修改此处路径即可,安装路径根据自己的情况而定。
    LimitNOFILE = 5000

    然后我们就可以通过systemd start/stop/status   mysqld3307   进行操作

    说明:

      目前:由于Mysql5.7的普及,基本上以前使用的Mysql5.5、Mysql5.6现在都会升级到Mysql5.7甚至现在还有新安装的Mysql8.0,并且大部分公司用的服务器的Linux发行版本都是基于Centos

    且大部分都是Centos7版本,不过也有一些公司用的是debian版本。但是本系列关于Mysql的讲解都是关于Centos7-Mysql5.7(适当的说一些Mysql8.0的特性)。

    附上启动过程: 

    [root@node01 ~]# systemctl status mysqld3307
    ● mysqld3307.service - MySQL Server
       Loaded: loaded (/etc/systemd/system/mysqld3307.service; disabled; vendor preset: disabled)
       Active: active (running) since Sat 2021-06-12 05:56:07 CST; 3h 30min ago
         Docs: man:mysqld(8)
               http://dev.mysql.com/doc/refman/en/using-systemd.html
     Main PID: 1172 (mysqld_safe)
       CGroup: /system.slice/mysqld3307.service
               ├─1172 /bin/sh /usr/local/mysql/bin/mysqld_safe --defaults-file=/data/3307/my.cnf
               └─1625 /usr/local/mysql/bin/mysqld --defaults-file=/data/3307/my.cnf --basedir=/usr/local/mysql --datadir=/data/3307...
    
    Jun 12 05:56:07 node01 systemd[1]: Started MySQL Server.
    Jun 12 05:56:07 node01 mysqld_safe[1172]: 2021-06-11T21:56:07.915276Z mysqld_safe Logging to '/data/3307/error.log'.
    Jun 12 05:56:07 node01 mysqld_safe[1172]: 2021-06-11T21:56:07.954366Z mysqld_safe Starting mysqld daemon with databases f...7/data
    Hint: Some lines were ellipsized, use -l to show in full.

    3.Mysql安全加固

      3.1修改初始密码(此处针对临时密码和空密码的情况)

        -->Mysql -uroot -p   -S /data/mysql/3307/mysqld.socket    ##本地通过socket进行登录。

        -->mysqladmin -uroot -p password '密码';或者用如下命令    ##修改密码

        -->alter user  root@localhost  identified by '新密码';

      3.2 删除非root或非localhost的用户

        具体可以通过select user,host from mysql.user 命令可以看当前Mysql用户状态

        -->delete from mysql.user  where user !='root' or host !='localhost' ;  ##删除非root或者非localhost的用户   

     

    4.数据库密码忘记怎么处理?

      4.1.先关闭数据库

        -->systemctl stop mysqld3307

      4.2.启动数据库到维护模式:     

        -->skip-grant-tables # 跳过授权表
        -->skip-networking # 跳过远程登录
        -->mysqld_safe --skip-grant-tables --skip-networking &


      4.3.加载授权表:

        -->flush privileges;

      4.4.修改密码

         -->alter user root@'localhost' identified by '新密码';

      

    5.基本配置文件

    [mysqld]
      basedir
    =/application/mysql   datadir=/data/mysql/3308/data   socket=/data/mysql/3308/mysql.sock   port=3308   log-error=/data/mysql/3308/mysql_err.log   secure-file-priv=/tmp   pid-file=/data/mysql/3308/mysql.pid   log_bin=/data/mysql/3308/binlog/mysql-bin   binlog_format=row   skip-name-resolve   server-id=8   autocommit=0   gtid-mode=on ##开启GTID模式   enforce-gtid-consistency=true   log-slave-updates=   read_only=on #####建议从库只读

      ###以下的参数配置可以适当添加(在从库配置中)

      master_info_repository=TABLE

      relay_log_info_repository=TABLE

      slave-skip-errors = 1133

        replicate-ignore-db = mysql

        replicate-ignore-db = information_schema

        replicate-ignore-db = performance_schema

        replicate_wild_ignore_table=mysql.%

        replicate_wild_ignore_table=information_schema.%

        replicate_wild_ignore_table=performance_schema.%

    
      [client]
      socket=/data/mysql/3308/mysql.sock


     这里补充一下:关于mysqld_safe 和mysqld启动的不同

    • 首先直接用mysqld命令启动mysql server时,在linux后台会发现关于mysqld进程只有一个,而用mysql_safe启动mysql server时,在linux后台会发现关于mysqld进程有两个
    • 直接运行mysqld程序来启动MySQL服务的方法很少见,mysqld_safe脚本会在启动MySQL服务器后继续监控其运行情况,并在其死机时重新启动它

    mysqld_safe其实主要做如下几件事

    • 检查系统和选项
    • 检查MyISAM表
    • 保持MySQL服务器窗口
    • 启动并监视mysqld,如果因错误终止则重启
    • 将mysqld的错误消息发送到数据目录中的host_name.err 文件。
    • 将mysqld_safe的屏幕输出发送到数据目录中的host_name.safe文件。

    【mysqld】:是mysql的核心程序,用于管理mysql的数据库文件以及用户的请求操作。mysqld可以读取配置文件中的[mysqld]的部分

    【mysqld_safe】:相当于多了一个守护进程,mysqld挂了会自动把mysqld进程拉起来   

      

  • 相关阅读:
    PHP curl_exec函数
    PHP curl_escape函数
    PHP curl_error函数
    PHP curl_errno函数
    PHP curl_copy_handle函数
    PHP curl_close函数
    PHP 利用 curl 发送 post get del put patch 请求
    PHP cURL 函数
    PHP 实例
    PHP 实例
  • 原文地址:https://www.cnblogs.com/zmc60/p/13878817.html
Copyright © 2011-2022 走看看