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进程拉起来   

  

 

版权声明:本文为zmc60原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/zmc60/p/13878817.html