MySQL介绍和安装

二、MySQL介绍和安装

1 介绍

MySQL 数据库隶属于 MySQL AB 公司,总部位于瑞典,后被 Oracle 收购。

官方网站:https://www.mysql.com/

2 优点

  • 成本低:开放源代码,一般可以免费使用。

  • 性能高:执行很快。

  • 简单:很容易安装和使用。

3 MySQL的版本

  • 社区版(免费)

  • 企业版(收费)

作为学习使用社区版即可。

4 MySQL的安装

4.1 windows安装

访问该页面,选择windows 5.7版本下载,如图:
MySQL介绍和安装

下载完成后解压,进入到bin目录下启动mysqld.exe即开启服务。

4.2 linux安装

以CentOS7安装mysql5.7为例,通过yum安装。

CentOS 7的yum源中默认没有mysql,要先下载mysql的repo源,点击这里获取,如图:
MySQL介绍和安装

复制下载链接。

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介绍和安装

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整个密码中至少要包含大/小写字母的总个数,默认为1
  • validate_password_number_count整个密码中至少要包含阿拉伯数字的个数,默认为1
  • validate_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(下载和安装自行上网搜索):
MySQL介绍和安装

上一篇:mysql数据库


下一篇:JDBC超详细入门教程,三面蚂蚁金服成功拿到offer