二、MySQL介绍和安装
1 介绍
MySQL 数据库隶属于 MySQL AB 公司,总部位于瑞典,后被 Oracle 收购。
2 优点
-
成本低:开放源代码,一般可以免费使用。
-
性能高:执行很快。
-
简单:很容易安装和使用。
3 MySQL的版本
-
社区版(免费)
-
企业版(收费)
作为学习使用社区版即可。
4 MySQL的安装
4.1 windows安装
访问该页面,选择windows 5.7版本下载,如图:
下载完成后解压,进入到bin
目录下启动mysqld.exe
即开启服务。
4.2 linux安装
以CentOS7安装mysql5.7为例,通过yum安装。
CentOS 7的yum源中默认没有mysql,要先下载mysql的repo源,点击这里获取,如图:
复制下载链接。
rpm -ivh https://dev.mysql.com/get/mysql80-community-release-el7-5.noarch.rpm
我们可以通过以下方法检测是否已经成功安装了yum源:
[root@control-plane ~]# yum repolist enabled | grep "mysql.*-community.*"
mysql-connectors-community/x86_64 MySQL Connectors Community 230
mysql-tools-community/x86_64 MySQL Tools Community 138
mysql80-community/x86_64 MySQL 8.0 Community Server 321
当你使用此方法进行安装MySQL的时候,可以看到会默认安装mysql的最新稳定版本(MySQL 8.0 Community Server),如果想要安装以前的版本,比如5.7,需要进行配置。
首先我们先查看MySQL的哪些源被禁用或者启用了:
[root@control-plane ~]# yum repolist all | grep mysql
mysql-cluster-7.5-community/x86_64 MySQL Cluster 7.5 Community 禁用
mysql-cluster-7.5-community-source MySQL Cluster 7.5 Community - 禁用
mysql-cluster-7.6-community/x86_64 MySQL Cluster 7.6 Community 禁用
mysql-cluster-7.6-community-source MySQL Cluster 7.6 Community - 禁用
mysql-cluster-8.0-community/x86_64 MySQL Cluster 8.0 Community 禁用
mysql-cluster-8.0-community-source MySQL Cluster 8.0 Community - 禁用
mysql-connectors-community/x86_64 MySQL Connectors Community 启用: 230
mysql-connectors-community-source MySQL Connectors Community - S 禁用
mysql-tools-community/x86_64 MySQL Tools Community 启用: 138
mysql-tools-community-source MySQL Tools Community - Source 禁用
mysql-tools-preview/x86_64 MySQL Tools Preview 禁用
mysql-tools-preview-source MySQL Tools Preview - Source 禁用
mysql57-community/x86_64 MySQL 5.7 Community Server 禁用
mysql57-community-source MySQL 5.7 Community Server - S 禁用
mysql80-community/x86_64 MySQL 8.0 Community Server 启用: 321
mysql80-community-source MySQL 8.0 Community Server - S 禁用
看到现在启用的是8.0版本系列的。我们需要安装的是5.x系列的。那么我们就可以执行以下命令:
yum-config-manager --disable mysql80-community #禁用8.0版本
yum-config-manager --enable mysql57-community #启用5.7版本(需要哪个就启用哪个)
上面的命令执行如果提示:
-bash: yum-config-manager: 未找到命令
那么我们就需要安装执行以下命令来安装一个包:
yum install -y yum-utils
执行成功之后继续执行上面的命令。
再次查看:
[root@control-plane ~]# yum repolist enabled | grep "mysql.*-community.*"
mysql-connectors-community/x86_64 MySQL Connectors Community 230
mysql-tools-community/x86_64 MySQL Tools Community 138
mysql57-community/x86_64 MySQL 5.7 Community Server 564
变为5.7版本,就可以开始安装mysql了。
yum install -y mysql-community-server
启动mysql服务:
systemctl start mysqld # 启动服务
systemctl status mysqld # 查看服务状态
如果是MySQL5.7版本以前,安装后的默认密码为空,直接回车即可进入。MySQL5.7会在安装后为root用户生成一个随机临时密码。但无论你安装的MySQL是哪个版本,无论使用哪种方式安装,无论是否需要密码登录,始终记住数据库的安全大于一切,所以请设置密码。
本次安装的MySQL没有设置密码,但系统赋予了默认的且临时的密码,如果是第一次安装且没有重复重启服务,打开mysql默认日志文件/var/log/mysqld.log
,可以查看:
# 搜索临时密码,在日志文件中定位
grep 'temporary password' /var/log/mysqld.log
拿到密码后可以进行登录:
mysql -uroot -p
Enter password:P&runEFZ_9E<
4.3 docker安装
以mysql5.7为例,可以前往docker hub上搜索官方镜像:
docker pull mysql:5.7 # 如果不指定tag,默认是latest
创建容器:
docker run -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
# MYSQL_ROOT_PASSWORD:root密码
如果要建立目录映射的mysql容器:
docker run -p 3306:3306 --name mysql \
-v /usr/local/docker/mysql/conf:/etc/mysql \
-v /usr/local/docker/mysql/logs:/var/log/mysql \
-v /usr/local/docker/mysql/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
-d mysql:5.7
创建完成后,可以通过远程连接到该机器的3306端口。
5 MySQL的卸载
5.1 windows卸载
windows的卸载不难,请自己上网搜索。
5.2 linux卸载
首先查询系统是否安装了mysql
rpm -qa | grep -i mysql
查看MySQL服务状态:
systemctl status mysqld
如果MySQL服务正在运行,停止MySQL服务
systemctl stop mysqld
卸载查询出来的这些组件:
mysql-community-common-5.7.37-1.el7.x86_64
mysql-community-client-5.7.37-1.el7.x86_64
mysql-community-server-5.7.37-1.el7.x86_64
mysql80-community-release-el7-5.noarch
mysql-community-libs-5.7.37-1.el7.x86_64
mysql-community-libs-compat-5.7.37-1.el7.x86_64
命令:
rpm -e --nodeps mysql-community-libs-compat-5.7.37-1.el7.x86_64
# 通过该命令删除所有组件
和Windows系统一样,MySQL的卸载不仅仅是卸载程序,也需要删除与程序相关的文件夹。才能保证卸载的完整性。
查看MySQL对应的文件夹
find / -name mysql
# 或者
whereis mysql
将查找出来的mysql目录rm -rf
即可。
rm -rf /usr/lib64/mysql
rm -rf /usr/share/mysql
删除MySQL配置文件
rm -rf /etc/my.cnf
rm -rf /etc/init.d/mysqld
删除mysql用户及用户组
id mysql # 查看MySQL用户及用户组
userdel mysql
完成。
5.3 docker卸载
docker卸载很简单,首先查看容器id:
docker ps
删除该容器
docker stop containerID
docker rm containerID
如果挂载了数据卷,删除对应的目录即可完成卸载。
6 修改密码
如果是docker安装,在创建容器的时候就可以指定密码。而windows和linux需要修改密码,在终端中输入命令
mysqladmin -u用户名 -p password 新密码
# # 其中 username 为要修改密码的用户名,newpwd 为要修改的新密码,比如
mysqladmin -uroot -p password 123456
如果修改时提示:
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
,说明新密码比较简单,不符合密码策略。可以先将原来的临时密码修改一位,把新密码暂时设置上。比如这样:
mysqladmin -uroot -p password runEFZ_9E
修改完成后,登录进入mysql,查看查看mysql初始的密码策略
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 | MEDIUM | | validate_password_special_char_count | 1 | +--------------------------------------+--------+ 7 rows in set (0.00 sec)
关于 mysql 密码策略相关参数;
validate_password_length
固定密码的总长度,默认为8位validate_password_dictionary_file
指定密码验证的文件路径,默认为空validate_password_mixed_case_count
整个密码中至少要包含大/小写字母的总个数,默认为1validate_password_number_count
整个密码中至少要包含阿拉伯数字的个数,默认为1validate_password_policy
指定密码的强度验证等级,默认为MEDIUM
- 关于
validate_password_policy
的取值:
0/LOW
:只验证长度1/MEDIUM
:验证长度、数字、大小写、特殊字符2/STRONG
:验证长度、数字、大小写、特殊字符、字典文件validate_password_special_char_count
整个密码中至少要包含特殊字符的个数,默认为1如果需要修改密码策略,使用如下命令:
mysql> set global validate_password_length=6; # 设置密码的总长度为6位 mysql> set global validate_password_policy=LOW; # 设置密码的强度验证等级为LOW
现在可以为mysql设置简单密码了,只要满足六位的长度即可。但是在生产环境下,不要这么做,尽量使用高强度密码。
介绍另一种修改密码的方式,在登录进入mysql命令行的情况下:
# MySQL版本5.7.6版本以前用户可以使用如下命令: mysql> SET PASSWORD = PASSWORD('123456'); # MySQL版本5.7.6版本开始的用户可以使用如下命令: mysql> ALTER USER USER() IDENTIFIED BY '123456'; # 如果不清楚自己是什么版本,可以将两条都尝试一下。
现在,退出重新登录测试一下:
mysql -uroot -p123456
如果上面的方式不能修改可以使用下面安全模式修改root密码:
打开
/etc/my.cnf
文件,加上一行skip-grant-tables # 表示跳过安全检查(即登录时无需密码)
重启服务:
systemctl restart mysqld
直接登录即可登录成功:
mysql -uroot
登陆后,切换到mysql库
mysql> use mysql Database changed
查看表结构
mysql> desc user;
需要注意的是5.7以上版本已经没有了
Password
字段,取而代之的是authentication_string
字段。修改密码:
mysql> update user set authentication_string='密码' where User='root' and host='localhost'; # 5.7及以上
mysql> update user set Password='密码' where User='root' and host='localhost'; # 5.6及以下
mysql> FLUSH PRIVILEGES;
修改成功后,要删掉刚刚配置文件中添加的`skip-grant-tables`,否则谁都可以登录了。 删除之后,再次重启服务 ```bash systemctl restart mysqld
完成。
7 MySQL服务的登录和退出
在安装了mysql的客户端的电脑上,通过命令行方式连接数据库:
mysql -h主机名 -P端口号 -u用户名 -p密码
# 如果连接本地,主机名和端口可以不写,比如:
mysql -uroot -p
# -p后面可以不写密码,而是根据提示输入密码,这样输入的密码是不可见的
还可以通过各种各样的工具来连接mysql,比如Navicat(下载和安装自行上网搜索):