我叫张贺,贪财好色。一名合格的LINUX运维工程师,专一于LINUX的学习和研究,曾负责某中型企业的网站运维工做,爱好佛学和跑步。 我的博客:https://www.cnblogs.com/yizhangheka 笔者微信:zhanghe15069028807mysql
[TOC]linux
SYSTEMCTL | HOSTNAME | IPADDR | DISCRIPTION |
---|---|---|---|
CentOS Linux release 7.6.1810 (Core) | mysql01 | 192.168.80.140 | yum-install |
CentOS Linux release 7.6.1810 (Core) | mysql02 | 192.168.80.141 | binary-install |
CentOS Linux release 7.6.1810 (Core) | mysql03 | 192.168.80.142 | make-install |
##一、安装MYSQL-YUM源
sql
##二、安装说明数据库
[root@mysql01 ~]# ll /etc/yum.repos.d/ -rw-r--r-- 1 root root 2523 Jun 16 2018 CentOS-Base.repo -rw-r--r-- 1 root root 664 May 11 2018 epel.repo [root@mysql01 ~]# rpm -ivh https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm [root@mysql01 ~]# ll /etc/yum.repos.d/ total 16 -rw-r--r-- 1 root root 2523 Jun 16 2018 CentOS-Base.repo -rw-r--r-- 1 root root 664 May 11 2018 epel.repo -rw-r--r-- 1 root root 2076 Apr 25 2019 mysql-community.repo -rw-r--r-- 1 root root 2108 Apr 25 2019 mysql-community-source.repo [root@mysql01 ~]# yum repolist all | grep mysql mysql55-community/x86_64 MySQL 5.5 Community Server disabled mysql55-community-source MySQL 5.5 Community Server - disabled mysql56-community/x86_64 MySQL 5.6 Community Server disabled mysql56-community-source MySQL 5.6 Community Server - disabled mysql57-community/x86_64 MySQL 5.7 Community Server disabled #5.7版本处于关闭状态 mysql57-community-source MySQL 5.7 Community Server - disabled mysql80-community/x86_64 MySQL 8.0 Community Server enabled: #8.0版本处于开启状态 mysql80-community-source MySQL 8.0 Community Server - disabled
由于咱们的目前是要安装5.7版本,而非8.0版本,因此,咱们要将5.7版本的yum源打开,而将8.0版本的yum源关闭,有两种方法。 一、 第一种方法vim
[root@mysql01 ~]# yum-config-manager --enable mysql57-community [root@mysql01 ~]# yum-config-manager --disable mysql80-community [root@mysql01 ~]# yum repolist all | grep mysql mysql55-community/x86_64 MySQL 5.5 Community Server disabled mysql55-community-source MySQL 5.5 Community Server - disabled mysql56-community/x86_64 MySQL 5.6 Community Server disabled mysql56-community-source MySQL 5.6 Community Server - disabled mysql57-community/x86_64 MySQL 5.7 Community Server enabled: 384 mysql57-community-source MySQL 5.7 Community Server - disabled mysql80-community/x86_64 MySQL 8.0 Community Server disabled mysql80-community-source MySQL 8.0 Community Server - disabled
二、 第二种方法安全
[root@mysql01 ~]# rpm -ql mysql80-community-release-el7 /etc/pki/rpm-gpg/RPM-GPG-KEY-mysql /etc/yum.repos.d/mysql-community-source.repo /etc/yum.repos.d/mysql-community.repo [root@mysql01 ~]# vim /etc/yum.repos.d/mysql-community.repo [mysql57-community] name=MySQL 5.7 Community Server baseurl=http://repo.mysql.com/yum/mysql-5.7-community/el/7/$basearch/ enabled=1 #5.7版本默认关闭 gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql [mysql80-community] name=MySQL 8.0 Community Server baseurl=http://repo.mysql.com/yum/mysql-8.0-community/el/7/$basearch/ enabled=0 #8.0版本默认开启 gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
先要考虑好数据库应该存哪一个目录,方便之后之后的迁移和备份,因此要修改/etc/my.cnf
文件的datadir
的参数,咱们安装到/mysql/
下。bash
[root@mysql01 ~]# mkdir /mysql [root@mysql01 ~]# cat /etc/my.cnf [mysqld] datadir=/mysql socket=/var/lib/mysql/mysql.sock
[root@mysql01 ~]# yum -y install mysql-community-server [root@mysql01 ~]# systemctl start mysqld [root@mysql01 ~]# systemctl enable mysqld
yum
安装已经初始化完成,密码也已经设置完成,咱们在第一次启动失败以后去错误日志里面找到便可,以下所示:微信
[root@mysql01 ~]# systemctl restart mysqld [root@mysql01 ~]# mysql -uroot ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO) [root@mysql01 ~]# grep 'password' /var/log/mysql.log #若是系统是第一次安装的话,会过滤出root用户的密码,反之,没有,咱们能够跳过密码验证。
两种方法:一是记得本来的密码,改为新的密码;二是不记得原来的密码,强行更改密码。运维
## 一、知道原始密码 //第一种方式,先经过本来的密码登陆进数据库,使用`update`命令更改`mysql.user`表的字段; [root@mysql01 ~]# mysql -uroot -p'cba-123'; #原密码 mysql> update mysql.user set authentication_string=password('abc-123') where user='root'; #新密码 mysql>FLUSH PRIVILEGES; ## 二、不知道原始密码 //第二种方式,二是不记得原来的密码,强行更改密码。 [root@mysql01 ~]# vim /etc/my.cnf [mysqld] skip-grant-tables [root@mysql01 ~]#systemctl restart mysqld [root@mysql01 ~]# mysql mysql> update mysql.user set authentication_string=password('abc-123') where user='root'; #新密码 mysql>FLUSH PRIVILEGES; #退出后,再删除`skip-garnt-talbes`参数,重启数据库,便可经过新密码登陆。 update user set authentication_string='' where user='root'; #8.0的语法变成这样了 ## 三、`mariadb`变量密码的方式 更改`mysql.user`表的方式与mysql相同,可是密码字段不一样,提早用`desc`查看一下便可。 mysqladmin是通用的,若是是mariadb刚安装启动,没有设置密码,就用`mysql password cba-123`设置密码。 若是是更改密码的话,就用这个`mysqladmin -u root -poldpassword password 'newpassword'`
有时候安装完成以后会出现这样的提示:You must reset your password using ALTER USER statement before executing ALTER USER USER() IDENTIFIED BY 'cba-123';socket
//策略改成LOW以后,仅检查密码的长度,默认是8位 mysql> set global validate_password_policy=LOW; Query OK, 0 rows affected (0.00 sec) mysql> ALTER USER USER() IDENTIFIED BY 'cba-123@'; Query OK, 0 rows affected (0.00 sec) mysql> SHOW VARIABLES LIKE 'validate_password%'; +--------------------------------------+-------+ | Variable_name | Value | +--------------------------------------+-------+ | validate_password_check_user_name | OFF | | validate_password_dictionary_file | | | validate_password_length | 8 | | validate_password_mixed_case_count | 1 | | validate_password_number_count | 1 | | validate_password_policy | LOW | | validate_password_special_char_count | 1 | +--------------------------------------+-------+ 7 rows in set (0.00 sec)
采⽤⼆进制免编译⽅式安装MYSQL
,不须要复杂的编译设置和编译时间等待,解压下载的软件包,初始化便可完成MySQL
的安装和启动。MYSQL二进制包下载地址
[root@mysql02 ~]# systemctl stop firewalld; [root@mysql02 ~]# systemctl disable firewalld; [root@mysql02 ~]# setenforce 0
[root@mysql02 ~]# groupadd mysql; [root@mysql02 ~]# useradd -r -g mysql -s /sbin/nologin mysql; [root@mysql02 ~]# mkdir /soft/src -p && cd /soft/src
[root@mysql02 src]# wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.28-linux-glibc2.12-x86_64.tar.gz [root@mysql02 src]# tar xf mysql-5.7.28-linux-glibc2.12-x86_64.tar.gz -C /soft/ [root@mysql02 src]# ln -s /soft/mysql-5.7.28-linux-glibc2.12-x86_64/ /soft/mysql
//建立数据库的文件目录和数据目录,并递归用户受权 [root@mysql02 ~]# mkdir /soft/mysql{mysql-file,data} [root@mysql02 ~]# chown -R mysql:mysql /soft/mysql //初始化数据库 [root@mysql02 ~]# /soft/mysql/bin/mysqld --initialize \ > --user=mysql --basedir=/soft/mysql \ #初始时指定`mysql`的运行用户,基础目录和数据目录,出现密码表示成功。 > --datadir=/soft/mysql/data 2019-11-20T01:49:32.945198Z 1 [Note] A temporary password is generated for root@localhost: Pk>,vkLD,8S)
[root@mysql02 ~]# vim /etc/my.cnf [mysqld] datadir=/soft/mysql/data basedir=/soft/mysql
//二进制包里面人家已经为咱们准备好了启动文件,咱们将之复制到`/etc/init.d`里面便可以使用chkconfig进行管理了。 [root@mysql02 ~]# cp /soft/mysql/support-files/mysql.server /etc/init.d/mysqld [root@mysql02 ~]# chkconfig --add mysqld [root@mysql02 ~]# chkconfig mysqld on //修改启动文件里面的参数,就是修改数据库的基础目录和数据目录,默认的与咱们的环境对不上。 [root@mysql02 ~]# sed -i '/^basedir=/cbasedir=\/soft\/mysql' /etc/init.d/mysqld [root@mysql02 ~]# sed -i '/^datadir=/cdatadir=\/soft\/mysql\/data' /etc/init.d/mysqld //启动数据库,比较慢 [root@mysql02 ~]# /etc/init.d/mysqld start //检查 [root@mysql02 ~]# ss -tnlp | grep 3306 [root@mysql02 ~]# lsof -i :3306
//默认`PATH`变量没有`mysql`*客户端*命令链接数据库,`mysql`客户端命令在二进制文件里面,咱们只要将`mysql`的二进制文件路径加入`PATH`变量便可。 [root@mysql02 ~]# mysql bash: mysql: command not found... [root@mysql02 ~]# echo "export PATH=$PATH:/soft/mysql/bin" >> /etc/profile [root@mysql02 ~]# source /etc/profile [root@mysql02 ~]# mysql -uroot -p"Pk>,vkLD,8S"
YUM
安装最是简单不过了,只要yum install
就能够了,可是咱们并无这么作,由于咱们的源用的是第三方源,用第三方源安装不如直接用MYSQL
官方源安全靠谱,因此咱们首先经过官网的提示更新了源,而后再安装;默认的安装位置是/etc/my.cnf
指定的,因此咱们在yum
以前先定义好到底安装到什么地方。
二进制安装无需yum,只要解压而后初始化便可。一样的,咱们在用二进制安装以前先建立好运行的用户,数据库文件存放的位置,数据库数据存放的位置,注意别忘记受权用户对目录的权限,而后,在初始化的时候告诉二进制文件运行它的用户是谁,它的基础目录和它的数据目录。 安装好以后,默认不能用systemctl
来管理,咱们能够将启动文件放到/etc/init.d/
目录下来管理,注意启动文件也要修改一下,里面的基本目录和数据目录可能与咱们的实际环境不符。 经过/etc/init.d/mysqld start
启动以后启动的是服务端,咱们想要链接到服务端须要客户端命令mysql
,默认PATH变量下没有,好在二进制文件里面MYSQL官方给咱们准备好了,咱们只须要将目录加入到PATH变量里面便可。
Starting MySQL... ERROR! The server quit without updating PID file
是由于我把skip-grant-talbes
里面的grant
拼写错误了。
当咱们进入一家新公司的时候,咱们能够经过pa aux | grep mysql
看到二进制安装mysql时用到的参数,经过这些参数咱们能够看到安装环境了,便于咱们快速熟悉工做。
[root@mysql02 ~]# ps aux | grep mysql avahi 8330 1.1 0.0 62268 2280 ? Ss 09:27 1:27 avahi-daemon: registering [mysql02-157.local] root 75548 0.0 0.0 113312 1612 pts/0 S 10:28 0:00 /bin/sh /soft/mysql/bin/mysqld_safe --datadir=/soft/mysql/data --pid-file=/soft/mysql/data/mysql02.pid mysql 75680 4.0 5.2 1187232 176204 pts/0 Sl 10:28 2:42 /soft/mysql/bin/mysqld --basedir=/soft/mysql --datadir=/soft/mysql/data --plugin-dir=/soft/mysql/lib/plugin --user=mysql --log-error=mysql02.err --pid-file=/soft/mysql/data/mysql02.pid