文章目录
Mysql5.7.28 安装
正所谓入门从安装开始,下面说下Mysql5.7.28的安装教程,博主一步一步的走来的;后续也会继续更新MySQL相关知识点,也是面试中常问的
环境准备
安装环境:Centos7 (镜像下载:https://www.centos.org/ 与VM搭建虚拟机环境;这里就不介绍了,不会的自行百度)
mysql版本:5.7.28 (在官网https://dev.mysql.com/downloads/mysql/下载mysql-5.7.28-linux-glibc2.12-x86_64.tar.gz)
安装方式:基于glibc的tar包安装;将下载好的tar包上传至虚拟机某个目录下面,我这边用的目录是/local
解压安装包并移动到安装位置
$ tar -zxvf /local/mysql-5.7.28-linux-glibc2.12-x86_64.tar.gz
$ mkdir /local/mysql-5.7.28
$ mv /local/mysql-5.7.28-linux-glibc2.12-x86_64/* /local/mysql-5.7.28
创建mysql用户及组
$ groupadd mysql
$ useradd -g mysql mysql -s /sbin/nologin
创建之前可以用下面命令查询mysql用户及组是否存在
$ cat /etc/group | grep mysql
$ cat /etc/passwd | grep mysql
修改目录权限
$ chown -R mysql:mysql /local/mysql-5.7.28/
查看是否授权成功
初始化数据库
$ cd mysql-5.7.28/
$ bin/mysqld --initialize --user=mysql --basedir=/local/mysql-5.7.28 --datadir=/local/mysql-5.7.28/data
初始化数据库会生成一个默认密码,用于第一次登陆,记住
开启SSL
$ bin/mysql_ssl_rsa_setup --datadir=/local/mysql-5.7.28/data
SSL是MySQL5.7版本及之后提供的一种安全访问配置;这个命令mysql5.7默认是开启的,所以执不执行无所谓,开启方式自行百度,这块就不多做介绍了
- 1、MySQL5.7默认是开启SSL连接,如果强制用户使用SSL连接,那么应用程序的配置也需要明确指定SSL相关参数,否则程序会报错。
- 2、虽然SSL方式使得安全性提高了,但是相对地使得QPS也降低23%左右。所以要谨慎选择:
- 2.1、对于非常敏感核心的数据,或者QPS本来就不高的核心数据,可以采用SSL方式保障数据安全性;
- 2.2、对于采用短链接、要求高性能的应用,或者不产生核心敏感数据的应用,性能和可用性才是首要,建议不要采用SSL方式;
修改配置文件
$ vi /etc/my.cnf
内容如下
修改后内容如下,可以直接拷贝放进/etc/my.cnf
[mysqld]
basedir=/local/mysql-5.7.28
datadir=/local/mysql-5.7.28/data
socket=/local/mysql-5.7.28/mysql.sock
# 不区分大小写
lower_case_table_names=1
# 默认引擎
default-storage-engine=InnoDB
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
# Settings user and group are ignored when systemd is used.
# If you need to run mysqld under a different user or group,
# customize your systemd unit file for mariadb according to the
# instructions in http://fedoraproject.org/wiki/Systemd
[mysqld_safe]
log-error=/local/mysql-5.7.28/log/mysql-error.log
pid-file=/local/mysql-5.7.28/mysqld.pid
#
# include all files from the config directory
#
!includedir /etc/my.cnf.d
创建目录及日志文件
$ mkdir log
$ touch mysql-error.log
其中在/local/mysql-5.7.28创建了新的目录/log;所以需要重新授权一下
$ chown -R mysql:mysql /local/mysql-5.7.28/
到此就可以启动mysql服务了
首先修改mysql.server文件第46,47行
启动
$ support-files/mysql.server start
设置MySQL开机启动服务
$ cp /local/mysql-5.7.28/support-files/mysql.server /etc/init.d/mysqld
$ chkconfig --add mysqld
$ service mysqld restart
service mysqld status查看mysql服务状态
连接数据库修改密码
$ mysql -uroot -p
此时提示:-bash: mysql: 未找到命令;原因是:系统默认会查找/usr/bin下的命令,如果这个命令不在这个目录下,当然会找不到命令,我们需要做的就是映射一个链接到/usr/bin目录下;所以执行下面命令添加链接
$ ln -s /local/mysql-5.7.28/bin/mysql /usr/bin
再次连接数据库,此时的密码为前面提示的默认密码
$ mysql -uroot -p'hluzV4pHY)u5'
此时可能会报如下错误
这种错误就很明显是找不到/tmp/mysql.sock;解决方法:1,建立一个软连接ln -s /local/mysql-5.7.28/mysql.sock /tmp/mysql.sock;2,在/etc/my.cnf文件最上面添加如下内容
[mysql]
socket=/tmp/mysql.sock
重启mysql
$ service mysqld restart
再次连接数据库就可以连上了,修改密码
$ set PASSWORD = PASSWORD('123456');
$ flush privileges;
这里顺便提一下,有的版本会有密码校验规则,简单的密码无法设置,这个可以进行修改;方式如下
1,查看一下msyql密码相关的几个全局参数
> show variables like 'validate_password%';
2,参数解释
+validate_password_policy
:密码强度检查等级,默认是1,即MEDIUM,所以刚开始设置的密码必须符合长度,且必须含有数字,小写或大写字母,特殊字符。有以下取值:
Policy | Tests Performed |
---|---|
0 or LOW | Length |
1 or MEDIUM | Length; numeric, lowercase/uppercase, and special characters |
2 or STRONG | Length; numeric, lowercase/uppercase, and special characters; dictionary file |
validate_password_dictionary_file
:插件用于验证密码强度的字典文件路径。validate_password_length
:密码最小长度,参数默认为8,它有最小值的限制,最小值为:validate_password_number_count + validate_password_special_char_count + (2 * validate_password_mixed_case_count)validate_password_mixed_case_count
:密码至少要包含的小写字母个数和大写字母个数。validate_password_number_count
:密码至少要包含的数字个数。validate_password_special_char_count
:密码至少要包含的特殊字符数。
可以自行对应进行修改
允许远程连接
首先查看mysql端口号,默认3306不用说;登陆mysql输入下面命令
> show global variables like ‘port’;
然后关闭端口防火墙
- 1,查看已经开放的端口号
$ firewall-cmd --list-ports
- 2,mysql对应端口号未开启,则开启端口
$ firewall-cmd --zone=public --add-port=3306/tcp --permanent
命令含义: –zone #作用域 –add-port=80/tcp #添加端口,格式为:端口/通讯协议 –permanent #永久生效,没有此参数重启后失效
- 3,重启防火墙
$ firewall-cmd --reload
- 4,上面步骤不执行,或者直接关闭防火墙也可以
$ systemctl stop firewalld.service
$ systemctl disable firewalld.service
查看mysql用户
> use mysql
> select user,host from user;
支持root用户允许远程连接mysql数据库
> grant all privileges on *.* to 'root'@'%' identified by '123456' with grant option;
> flush privileges;
外部远程就可以允许连接了,如果还不能连接,注意查看my.cnf是否存在bind-address = 127.0.0.1这一行;存在的话将其注释或者修改为
bind-address = 0.0.0.0,然后重启服务即可
前面说的开启SSL这里再提一下
连接数据库后,执行下面命令可以查看SSL是否开启
> show global variables like '%ssl%';
查看dba连接方式
> \s
具体开启方式,这里就不进行阐述了,可以自行百度,很简单;当然开启SSL会有额外的性能消耗的
至此mysql 5.7.28已经安装完成
相关文章
MySQL5.7.28_01_基于glibc的tar包安装
MySQL5.7.28_02_一张图片带你入门MySQL
MySQL5.7.28_03_一张图片带你进阶MySQL
MySQL5.7.28_03-1_一篇简单文章让你理解B- Tree和B+ Tree理解
MySQL5.7.28_03-2_MySQL中MyISAM与InnoDB引擎中的锁的简单理解
MySQL5.7.28_03-3_理解MySQL主从复制(也叫做主从同步)
MySQL5.7.28_03-4_MySQL 分布式ID方案总结
MySQL5.7.28_04_MySQL相关规范(实际工作中需要注意的)