第二章 安装与初始化
1,安装
1.1,二进制安装(5.7.20版本)(本人所用)
- 解压后就是所有内容,类似于windows中经常下载的绿色软件(不用安装 ,直接解压,打开可执行程序运行)
-
#下载完成,将下载的文件“mysql-5.7.20-linux-glibc2.12-x86_64.tar.gz”放入新建的文件夹"/app"
开始安装
1,预处理
1,#卸载已安装的MySQL,Mariadb数据库
[root@localhost ~]#
[root@localhost ~]# rpm -qa mariadb*
mariadb-libs-5.5.65-1.el7.x86_64 //有安装,需要卸载
[root@localhost ~]# yum -y remove mariadb-libs
2,#解压下载的压缩文件
(前提:pwd一下,当前目录为/root,并且将安装包放到/root下)
[root@localhost ~]# ls
anaconda-ks.cfg initial-setup-ks.cfg
CentOS-7-x86_64-DVD-2003.iso mysql-5.7.20-linux-glibc2.12-x86_64.tar.gz
[root@localhost ~]# mkdir /app
[root@localhost ~]# cp mysql-5.7.20-linux-glibc2.12-x86_64.tar.gz /app
[root@localhost ~]# cd /app
[root@localhost app]# tar xf mysql-5.7.20-linux-glibc2.12-x86_64.tar.gz
#tar命令:解压存档文件;x:从存档文件中提起文件;f:指定存档文件的名称
3,#将解压生成的文件夹名称改为“mysql”
[root@localhost app]# ls
mysql-5.7.20-linux-glibc2.12-x86_64 mysql-5.7.20-linux-glibc2.12-x86_64.tar.gz
[root@localhost app]# mv mysql-5.7.20-linux-glibc2.12-x86_64 mysql
[root@localhost app]# ls
mysql mysql-5.7.20-linux-glibc2.12-x86_64.tar.gz
4,#创建数据文件
[root@localhost app]# mkdir -p /data/mysql
5,#修改环境变量,文件末尾添加:export PATH=/app/mysql/bin:$PATH
[root@localhost app]# vim /etc/profile
[root@localhost app]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
6,#读取执行命令,更新环境变量
[root@localhost app]# source /etc/profile
[root@localhost app]# echo $PATH
/app/mysql/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
7,#创建用户和组
(-M:不要创建用户的主目录;-s:新帐户的登录shell)
[root@localhost app]# useradd mysql -s /sbin/nologin -M
8,#文件夹授权给MySQL用户
(递归修改整个目录属主属组)
[root@localhost app]# chown mysql:mysql /app/* -R
[root@localhost app]# chown mysql:mysql /data/* -R
2,准备数据
#说明:
1,一个软件通常会有两部分组成:软件部分和数据部分
2,压缩包解压后,/app/mysql文件夹成为mysql软件部分
3,数据部分分为两部分:
系统数据:维护软件运行所需的数据
用户数据:软件运行期间,用户和软件相关的数据
#初始化
#方法一(不建议用,怕出错):
初始化软件和数据文件夹,注意mysqld命令的成功执行,需要环境变量PATH设置成功,否则需要写完整路径:/app/mysql/bin/mysqld ...
[
root @node1 app]# mysqld --initialize --user=mysql --basedir=/app/mysql --datadir=/data/mysql
或
[root @node1 app]# mysqld --initialize --user=mysql --basedir=/app/mysql --datadir=/data/mysql&>/data/mysql.log
#mysql从5.7版开始,增加了全新的密码安全机制:
1. 初始化完成后,会生成临时密码(显示在屏幕上,并在日志文件中记录一份)
2. 密码的强度:长度+字符类型
3. 密码过期时间:180天
/data/mysql文件夹下也创建了文件
#方法二:
初始化密码为空,不适用mysql5.7的默认密码安全机制
[root @node1 app]# mysqld --initialize-insecure --user=mysql --basedir=/app/mysql --datadir=/data/mysql
如果/data/mysql文件夹不为空,则会报错
#清空/data/mysql文件夹后,如果未停止mysqld服务(ps aux|grep mysqld),需要使用pkill直接杀死:pkill mysqld*
注:mysql5.6的初始化方法:
mysql_install_db --user=mysql --datadir=dataurl --basedir=baseurl
1.2,yum源安装
1,epel.release
RHEL以及他的衍生发行版如CentOS、Scientific Linux为了稳定,官方的rpm repository提供的rpm包往往是很滞后的,当然了,这样做这是无可厚非的,毕竟这是服务器版本,安全稳定是重点,官方的rpm repository提供的rpm包也不够丰富,很多时候需要自己编译那太辛苦了,而EPEL恰恰可以解决这两方面的问题。
什么是EPEL?
EPEL的全称叫 Extra Packages for Enterprise Linux 。EPEL是由 Fedora 社区打造,为 RHEL 及衍生发行版如 CentOS、Scientific Linux 等提供高质量软件包的项目。装上了 EPEL之后,就相当于添加了一个第三方源。
如果你知道rpmfusion.org的话,拿 rpmfusion 做比较还是很恰当的,rpmfusion 主要为桌面发行版提供大量rpm包,而EPEL则为服务器版本提供大量的rpm包,而且大多数rpm包在官方 repository 中是找不到的。
另外一个特点是绝大多数rpm包要比官方repository 的rpm包版本要来得新
#安装epel源:
yum -y install epel.release
2,从官网下载MySQL的yum源安装包
wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm
3,将下载的yum源包安装
yum -y install mysql57-community-release-el7-10.noarch.rpm
4,安装mysql服务器端
yum -y install mysql-community-server
5,安装mysql客户端
yum -y install mysql
4与5合并:
yum -y install mysql-community-server mysql
2,初始化,基本用法
2.1,二进制安装(本人所用)
1,配置文件/etc/my.cnf
[root @node1 app]# vim /etc/my.cnf
模版内容:
[mysqld]
basedir=/app/mysql
datadir=/data/mysql
user=mysql
server_id=1
port=3306
socket=/tmp/mysql.sock
[mysql]
socket=/tmp/mysql.sock
prompt=server1[\\d]>
2,启动与停止mysql
#方式一
[root @node1 app]# cd /app/mysql/support-files
[root @node1 support-files]# ./mysql.server start
#方式二(CentOS6)
将方式一中用到的mysql.server拷贝到/etc/init.d/,更名为mysqld
[root @node2 app] cp /app/mysql/support-files/mysql.server /etc/init.d/mysqld
[root @node2 app] service mysqld start
#方式三(CentOS7)
在文件夹/etc/systemd/system/下创建文件mysqld.service
[root @node2 app]# vim /etc/systemd/system/mysqld.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=/app/mysql/bin/mysqld --defaults-file=/etc/my.cnf
LimitNOFILE=5000
[root @node2 app]# systemctl start mysqld
3,简单的操作
#1. 初始化密码
[root @node2 app]# mysqladmin -uroot -p password '000000'
#2. 用户信息检索
#mysql5.7以前
sql_node1[(none)]> select user,password,host from mysql.user;
#mysql5.7
sql_node1[(none)]>select user,authentication_string,host from mysql.user;
2.2,yum源安装
1,重启mysqld服务
systemctl restart mysqld
第一次启动时,会在日志文件中生成临时密码
通过查看配置文件(/etc/my.cnf),可以得到配置文件的位置:/var/log/mysqld.log
2,查看安装MySQL生成的默认登录密码
grep 'password' /var/log/mysqld.log
3,登录mysql
1.mysql -uroot -p’8,m%*KRkFSdM‘ 8,m%*KRkFSdM为临时密码
2.mysql -uroot -p 会提示输入密码
4,修改登录密码
#首次使用必须修改密码,否则不能使用。
5,重启服务
systemctl restart mysqld
6,创建一个utf8字符集的数据库
7,查看数据库
8,授权
9,刷新
10,查看用户授权
11,开机自启
systemctl enable mysqld
3,关于5.7的密码策略
1,mysql5.7的密码策略要求:
a. 长度至少为8
b. 至少有一个特殊字符
c. 大小写字母
d. 数字
2,查看密码策略
validate_password_policy:密码安全策略,默认MEDIUM策略
validate_password_dictionary_file:密码策略文件,策略为STRONG才需要
validate_password_length:密码最少长度
validate_password_mixed_case_count:大小写字符长度,至少各1个
validate_password_number_count :数字至少1个
validate_password_special_char_count:特殊字符至少1个
3,修改密码策略
#临时修改
set global
例如强度降低,长度降低
>set global validate_password_policy=0;
>set global validate_password_length=6;
#永久修改
修改配置文件my.cnf
例如强度降低,长度降低,在mysqld节点中添加:
validate_password_policy=0
validate_password_length=6
注意:修改配置文件需要重新启动mysqld
4,修改密码
方法一:
>alter user 'xxx'@'localhost' identified by '新密码';
方法二:
>set password for 'xxx'@'localhost'=password('新密码');
password_policy=0;
set global validate_password_length=6;
```shell
#永久修改
修改配置文件my.cnf
例如强度降低,长度降低,在mysqld节点中添加:
validate_password_policy=0
validate_password_length=6
注意:修改配置文件需要重新启动mysqld
4,修改密码
方法一:
>alter user 'xxx'@'localhost' identified by '新密码';
方法二:
>set password for 'xxx'@'localhost'=password('新密码');