Mysql安装说明
说明
数据库版本:MySQL Community Server 5.7.29
操作系统/位数:阿里云CentOS 7.6 64位
符号说明:【】中包含的是操作、url地址或linux命令
注:Community server 为免费版本。
注:本文中贴出的指令如果copy执行时报错,请手动输入,可能是字符乱码、空格等问题导致的。特别说明的原因是,在安装过程中,经常发现从网上copy的指令不能用,最终发现不是指令的问题,而是copy时存在空格、乱码等问题,所有手动输入就可以了。
常用指令
- 查看查看系统位数
getconf LONG_BIT
![31d506d7a69b110fdc2fed5e2acc9352.png](https://img-blog.csdnimg.cn/img_convert/31d506d7a69b110fdc2fed5e2acc9352.png)
- xshell屏幕清理
在安装过程中,xshell中可能存在大量的操作指令和日志,可以通过clear命令,清理xshell屏幕日志。
![1370ab5b147b27f1cca08a5e0812a864.png](https://img-blog.csdnimg.cn/img_convert/1370ab5b147b27f1cca08a5e0812a864.png)
![91f20904b19a5e5ddbd2d4df286d23a7.png](https://img-blog.csdnimg.cn/img_convert/91f20904b19a5e5ddbd2d4df286d23a7.png)
- Mysql退出
【exit;】
![c44789fafb573df586ae6f137207ab19.png](https://img-blog.csdnimg.cn/img_convert/c44789fafb573df586ae6f137207ab19.png)
下载文件
使用rpm文件进行安装。
安装文件说明
考虑到不需要安装全部的功能,所有就没有下载bundle版本,而是单独下载的,安装文件一共有5个,说明如下:
mysql-community-common-5.7.29-1.el7.x86_64.rpm:数据库配置
mysql-community-libs-5.7.29-1.el7.x86_64.rpm:数据库共享lib库
mysql-community-client-5.7.29-1.el7.x86_64.rpm:客户端组件
mysql-community-server-5.7.29-1.el7.x86_64.rpm:服务端
mysql-community-devel-5.7.29-1.el7.x86_64.rpm:开发lib库
注:其实第5个不安装,也不影响使用。
安装文件下载
安装文件下载有两种方式 ,一种是在官网下载后,在上传到服务器上,另外一种是直接在服务器上通过命令下载,具体如下:
第一种方式
官网界面下载
1、登录官网
输入【https://dev.mysql.com/downloads/mysql/】打开官网下载界面,因为下载界面展示的是目前最新版本,我们下载的是5.7.29版本,所以,我们点击 【Looking for previous GA versions?】打开历史版本下载界面,如下图:
注:其它版本的下载操作一样。
![3fe94165b9650fcd5bdc6199816e69ee.png](https://img-blog.csdnimg.cn/img_convert/3fe94165b9650fcd5bdc6199816e69ee.png)
在历史版本下载界面,选择【5.7.29】 版本,操作系统选择【Red Hat Enterprise Linux / Oracle Linux】,操作系统版本选择【Red Hat Enterprise Linux 7 / Oracle Linux 7 (x86,64-bit)】,打开对应版本下载列表,如下图:
![005e496b1e3edb560ef97ffd994ad19f.png](https://img-blog.csdnimg.cn/img_convert/005e496b1e3edb560ef97ffd994ad19f.png)
![5c55fa0681f46358e29ced48c4e0d51f.png](https://img-blog.csdnimg.cn/img_convert/5c55fa0681f46358e29ced48c4e0d51f.png)
点击 【Download】,打开下载界面,点击【No thanks, just start my download.】,下载文件,如下图:
![c52c0331fe6ac3f01adb68b42fccf0f8.png](https://img-blog.csdnimg.cn/img_convert/c52c0331fe6ac3f01adb68b42fccf0f8.png)
按照以上步骤,依次下载5个文件。
上传文件到服务器
上传下载的5个文件到linux指定目录,这里为/soft/tools/mysql。
第二种方式
定位到服务器指定路径【/soft/tools/mysql】,直接在服务器通过wget命令下载,具体如下:
cd /soft/tools/mysql
wget http://dev.mysql.com/Downloads/MySQL-5.7.29/mysql-community-common-5.7.29-1.el7.x86_64.rpm。
wget http://dev.mysql.com/Downloads/MySQL-5.7.29/mysql-community-libs-5.7.29-1.el7.x86_64.rpm
wget http://dev.mysql.com/Downloads/MySQL-5.7.29/mysql-community-client-5.7.29-1.el7.x86_64.rpm
wget http://dev.mysql.com/Downloads/MySQL-5.7.29/mysql-community-server-5.7.29-1.el7.x86_64.rpm
wget http://dev.mysql.com/Downloads/MySQL-5.7.29/mysql-community-devel-5.7.29-1.el7.x86_64.rpm
wget后面url组合方式为:【http://dev.mysql.com/Downloads/MySQL- + 版本号 + / + rpm文件名称】,rpm文件名称即下图中标红部分:
![0bbe1075514f8c183c02871ddf5f9f81.png](https://img-blog.csdnimg.cn/img_convert/0bbe1075514f8c183c02871ddf5f9f81.png)
注:/soft/tools/mysql为本人设定的路径,大家安装的时候可设置为自己想上传的路径。 注:同时如果要下载其它版本,换下版本号和rpm文件名称就可以了。
注:服务器wget方式还有个优势,即一般服务器网络比较好,下载起来速度快,并且不需要上传服务器了。
环境清理
确定安装环境是否安装了mysql或者存在mysql遗漏文件,如果存在,清理环境并删除相关文件。
1、查看相关文件
通过whereis mysql命令查看是否有mysql相关文件,【whereis mysql】
![3b6f983d12751c0a28a26e1149b99da5.png](https://img-blog.csdnimg.cn/img_convert/3b6f983d12751c0a28a26e1149b99da5.png)
- 删除文件
如果存在相关文件,通过rm -rf指令删除相关路径就可以了。【rm -rf /usr/lib64/mysql】。
安装
目前使用的是默认安装,没有特别指定安装路径。
进入上文rpm保存的路径【/soft/tools/mysql】,执行相关命令安装5个rpm文件,考虑到rpm文件直接有关联关系,5个文件需要按下文顺序来安装。
- 进入rpm文件路径
【cd /soft/tools/mysql】
- 安装mysql-community-common-5.7.29-1.el7.x86_64.rpm
【rpm -ivh mysql-community-common-5.7.29-1.el7.x86_64.rpm】
![9d7acb73b2fd430315561539dada3289.png](https://img-blog.csdnimg.cn/img_convert/9d7acb73b2fd430315561539dada3289.png)
如果输入指令后,提示存在冲突,需要先卸载冲突的包,在安装,具体如下:
A:存在冲突
![b84fca775b2c16c6e9eb74dd771301c5.png](https://img-blog.csdnimg.cn/img_convert/b84fca775b2c16c6e9eb74dd771301c5.png)
B:卸载冲突包
本文使用的是yum来卸载冲突包,包名就是冲突截图中的包名称。
【yum -y remove mariadb-libs-1:5.5.60-1.el7_5.x86_64】
![994afa92676841a28630c44c3b335867.png](https://img-blog.csdnimg.cn/img_convert/994afa92676841a28630c44c3b335867.png)
- 安装mysql-community-libs-5.7.29-1.el7.x86_64.rpm
【rpm -ivh mysql-community-libs-5.7.29-1.el7.x86_64.rpm】
![c23f1076fefd4973463a7a233c0d3a42.png](https://img-blog.csdnimg.cn/img_convert/c23f1076fefd4973463a7a233c0d3a42.png)
- 安装mysql-community-client-5.7.29-1.el7.x86_64.rpm
【rpm -ivh mysql-community-client-5.7.29-1.el7.x86_64.rpm】
![fae89c8075b30d23404d1acf1b4facfb.png](https://img-blog.csdnimg.cn/img_convert/fae89c8075b30d23404d1acf1b4facfb.png)
- 安装mysql-community-server-5.7.29-1.el7.x86_64.rpm
【rpm -ivh mysql-community-server-5.7.29-1.el7.x86_64.rpm】
![121d91a4414f34e71456b8aa06618420.png](https://img-blog.csdnimg.cn/img_convert/121d91a4414f34e71456b8aa06618420.png)
- 安装mysql-community-devel-5.7.29-1.el7.x86_64.rpm
【rpm -ivh mysql-community-devel-5.7.29-1.el7.x86_64.rpm】
![fa441b7d702ff9a6698ac4ed07752a26.png](https://img-blog.csdnimg.cn/img_convert/fa441b7d702ff9a6698ac4ed07752a26.png)
- 查看安装状态
【service mysqld status】
5个rpm文件安装完成后,如果不报错,mysql就安装成功了。
通过service mysqld status命令查看mysql状态,可以看到当前mysql相关信息及状态,因为没有启动,目前是inactive状态。
![350b4de611e7ddd85d89a3312fc015f6.png](https://img-blog.csdnimg.cn/img_convert/350b4de611e7ddd85d89a3312fc015f6.png)
启动
【service mysqld start】启动mysql
![ee9d79fae04ae875e2d5dfd0aec5e811.png](https://img-blog.csdnimg.cn/img_convert/ee9d79fae04ae875e2d5dfd0aec5e811.png)
【service mysqld status】查看mysql状态
![d3af10184d3e0c7747d5c01f5f542972.png](https://img-blog.csdnimg.cn/img_convert/d3af10184d3e0c7747d5c01f5f542972.png)
注:active表明mysql服务正常。
至此mysql已经初步启动起来了。
其它
1、查看mysql临时登录密码并root登录
1、查看临时密码
【grep password /var/log/mysqld.log】日志中记录了mysql临时密码,红双框起来处。
![35bda1dac301f0189637f1cc70aa2dce.png](https://img-blog.csdnimg.cn/img_convert/35bda1dac301f0189637f1cc70aa2dce.png)
![4ee8afd16f4fcd9269e39e9d09d8b691.png](https://img-blog.csdnimg.cn/img_convert/4ee8afd16f4fcd9269e39e9d09d8b691.png)
查看日志文件,我们可以发现 using password:YES,说明密码是正确的,所有上图中登录失败,不是密码错误的原因。
2、登录mysql
【mysql -u root -p】输入命令后,输入上文查询出来的临时密码,登录mysql,如下图:
![0a605e7f217d0d56af940f457b1cfe8d.png](https://img-blog.csdnimg.cn/img_convert/0a605e7f217d0d56af940f457b1cfe8d.png)
3、数据库使用失败
【use mysql;】基于root用户使用数据库时,报错了,系统提示需要重置密码。即:我们登陆以后,如果不重置密码,拒绝root登录。
![f09fb254ed22c58036c9894505dc4ff3.png](https://img-blog.csdnimg.cn/img_convert/f09fb254ed22c58036c9894505dc4ff3.png)
2、重置密码
1、root登录数据库(见上文)
2、查看密码规则
一句话:我们的密码只要超过8位数,有数字、有特殊字符、有大小写字母就可以了。当然也可以修改mysql校验规则,本文不做描述。
具体如下:
【 SHOW VARIABLES LIKE 'validate_password%';】
![72b7a7a76935dff1a7d0aba166157d25.png](https://img-blog.csdnimg.cn/img_convert/72b7a7a76935dff1a7d0aba166157d25.png)
关于 mysql 密码策略相关参数说明如下:
序号
规则
备注
1
validate_password_length
固定密码的总长度
2
validate_password_dictionary_file
指定密码验证的文件路径
3
validate_password_mixed_case_count
整个密码中至少要包含大/小写字母的总个数
4
validate_password_number_count
整个密码中至少要包含阿拉伯数字的个数
5
validate_password_policy
指定密码的强度验证等级,默认为 MEDIUM
关于 validate_password_policy 的取值:
0/LOW:只验证长度;
1/MEDIUM:验证长度、数字、大小写、特殊字符;
2/STRONG:验证长度、数字、大小写、特殊字符、字典文件;
6
validate_password_special_char_count
整个密码中至少要包含特殊字符的个数
3、重置密码
【set password = password(“yourpassword”)】
在密码符合条件的情况下,修改成功,如下图所示。
![e4cef7db206050f241e60fe3a7e70b47.png](https://img-blog.csdnimg.cn/img_convert/e4cef7db206050f241e60fe3a7e70b47.png)
大家可以看到,前面三次密码都修改失败了,因为密码没有符合相应的规则。
3、远程连接-设置远程连接权限
数据启动,并且密码修改后,我们尝试着远程连接,结果连接失败了。
![441214b0ef6906ae2735c94733f3942a.png](https://img-blog.csdnimg.cn/img_convert/441214b0ef6906ae2735c94733f3942a.png)
下面我们来进行mysql远程连接设置:
格式:grant 权限 on 数据库教程名.表名 to 用户@登录主机 identified by "用户密码";
【GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'youpassword' WITH GRANT OPTION;】
![b0ec9fb8db118835c28968f381783e6b.png](https://img-blog.csdnimg.cn/img_convert/b0ec9fb8db118835c28968f381783e6b.png)
注:赋予所有数据库(*.*)所有的权限(ALL PRIVILEGES)给root用户。
【GRANT ALL PRIVILEGES ON xxx.* TO 'xxxx'@'%' IDENTIFIED BY 'mbz202002wW#' WITH GRANT OPTION; 】
![6bebbc2bd9fb488bff2ba7ca4554a661.png](https://img-blog.csdnimg.cn/img_convert/6bebbc2bd9fb488bff2ba7ca4554a661.png)
注:赋予某个数据库(xxx.*)所有的权限(ALL PRIVILEGES)给xxxx用户。
4、远程连接-阿里云端口开放
![ebfe3f3a68515b8936ba7501117c4407.png](https://img-blog.csdnimg.cn/img_convert/ebfe3f3a68515b8936ba7501117c4407.png)
如果发现还是 连接不上,并且使用的阿里云ECS,需要在阿里云控制台中开放mysql数据库端口3306。操作步骤如下:
1、登录阿里云,打开云服务器ECS界面,点击云服务器ECS,进入云服务器管理控制界面,点击服务实例,进入实例管理界面。
![50d261a9e591eff1a87054671aa84f73.png](https://img-blog.csdnimg.cn/img_convert/50d261a9e591eff1a87054671aa84f73.png)
2、点击本实例安全组,点击配置规则,进入规则配置界面。
![666ab9ddaee64c0fd14774a8fb9da971.png](https://img-blog.csdnimg.cn/img_convert/666ab9ddaee64c0fd14774a8fb9da971.png)
3、点击添加安全组规则、新增安全规则,这里新增的是3306端口,规则是0.0.0.0/0表示支持所有IP访问3306端口。
![c5eb8c057de9b493e194196c3dc20902.png](https://img-blog.csdnimg.cn/img_convert/c5eb8c057de9b493e194196c3dc20902.png)
4、配置完成后,重启云服务
![8b61ceaf63021ba8b266dac7bf4f3e08.png](https://img-blog.csdnimg.cn/img_convert/8b61ceaf63021ba8b266dac7bf4f3e08.png)
5、重新远程登录
![c3621f3b9a2efd90f5b7031b1180115b.png](https://img-blog.csdnimg.cn/img_convert/c3621f3b9a2efd90f5b7031b1180115b.png)
输入用户名密码、远程登录成功。
![17755c4d38ca2d33a98e1d66d44d79f3.png](https://img-blog.csdnimg.cn/img_convert/17755c4d38ca2d33a98e1d66d44d79f3.png)
创建数据库用户
考虑的root权限比较大,实际应用中我们倾向于新建一个业务数据库用户。
1、登录服务器并以root登录数据库
![0a605e7f217d0d56af940f457b1cfe8d.png](https://img-blog.csdnimg.cn/img_convert/0a605e7f217d0d56af940f457b1cfe8d.png)
- 创建数据库用户
语法格式:
CREATE USER 'username'@'host' IDENTIFIED BY 'password';
序号
规则
备注
1
username
用户名
2
host
指定该用户在哪个主机上可以登陆,如果是本地用户可用localhost,如果想让该用户可以从任意远程主机登陆,可以使用通配符%
3
password
该用户的登陆密码,密码可以为空,如果为空则该用户可以不需要密码登陆服务器
例子:
【CREATE USER 'mbz202002'@'host' IDENTIFIED BY 'mbz202002wW#';】
![f60b1215a1531602f856d76060e9957a.png](https://img-blog.csdnimg.cn/img_convert/f60b1215a1531602f856d76060e9957a.png)
【CREATE DATABASE xxx;】创建数据库
【CREATE DATABASE `xxx` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci】创建数据xxx并制定数据库字符集utf-8,建议创建数据库的时候就指定字符集。
![5373241ec8a4ae0de1c9d0bc67bca4e1.png](https://img-blog.csdnimg.cn/img_convert/5373241ec8a4ae0de1c9d0bc67bca4e1.png)
删除数据库用户
MySQL 数据库中可以使用 DROP USER 语句来删除一个或多个用户账号以及相关的权限。
语法格式:
DROP USER <用户名1> [ , <用户名2> ]…
使用 DROP USER 语句应该注意以下几点:
例子:
【drop user 'xxx'@'host';】
![cb54ff8d4a39aa3ddf5d106b60ac92b1.png](https://img-blog.csdnimg.cn/img_convert/cb54ff8d4a39aa3ddf5d106b60ac92b1.png)
注意:用户名和数据库和登录主机需要用引号括起来
新建数据库
考虑的root权限比较大,实际应用中我们倾向于新建一个业务数据库用户。
1、登录服务器并以root登录数据库
![0a605e7f217d0d56af940f457b1cfe8d.png](https://img-blog.csdnimg.cn/img_convert/0a605e7f217d0d56af940f457b1cfe8d.png)
2、创建数据库
【CREATE DATABASE xxx;】创建数据库
【CREATE DATABASE `xxx` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci】创建数据xxx并制定数据库字符集utf-8,建议创建数据库的时候就指定字符集。
![5373241ec8a4ae0de1c9d0bc67bca4e1.png](https://img-blog.csdnimg.cn/img_convert/5373241ec8a4ae0de1c9d0bc67bca4e1.png)
赋予用户权限
语法格式:
GRANT privileges ON databasename.tablename TO 'username'@'host'
序号
规则
备注
1
privileges
用户的操作权限,如SELECT,INSERT,UPDATE等,如果要授予所的权限则使用ALL
2
databasename
数据库名
3
tablename
表名,如果要授予该用户对所有数据库和表的相应操作权限则可用*表示,如*.*
例子:
例子:
【GRANT all privileges ON xxx.* TO xxxx@'host';】
注释:给xxxx用户赋予xxx数据库的所有权限。
撤销用户权限
语法格式:
revoke privileges ON databasename.tablename from 'username'@'host'
revoke 跟 grant 的语法差不多,只需要把关键字 “to” 换成 “from” 即可:
序号
规则
备注
1
privileges
用户的操作权限,如SELECT,INSERT,UPDATE等,如果要授予所的权限则使用ALL
2
databasename
数据库名
3
tablename
表名,如果要授予该用户对所有数据库和表的相应操作权限则可用*表示,如*.*
例子:
例子:
【revoke all PRIVILEGES on *.* from 'xxxx'@'%';】
![e9c727b26c9e26413f3186464eb81cc4.png](https://img-blog.csdnimg.cn/img_convert/e9c727b26c9e26413f3186464eb81cc4.png)
注释:给xxxx用户撤销所有权限。
可以看到没有数据库权限了
![fed8179a38768dc9c914927afb3acd64.png](https://img-blog.csdnimg.cn/img_convert/fed8179a38768dc9c914927afb3acd64.png)
中文乱码设置
通过navicat导入中文时,发现中文乱码。
![5fb6ed08b851a8ac3ff71014af160a5b.png](https://img-blog.csdnimg.cn/img_convert/5fb6ed08b851a8ac3ff71014af160a5b.png)
下面我们进行数据库字符集设置。
1、查看当前数据库字符集
通过sql命令mysql -u root -p输入密码后进入数据库,再通过show variables like 'char%';查看字符编码配置。
【show variables like 'char%';】
![cb20184117cf592db64192164cb2d4d4.png](https://img-blog.csdnimg.cn/img_convert/cb20184117cf592db64192164cb2d4d4.png)
可以看到character_set_database和character_set_server字符集为latin1,我们需要修改为utf-8。
2、修改my.cnf文件
在 /etc/my.cnf下添加字符集设置,如果路径不对,请自行查找,在my.cnf文件中添加以下设置并保存。
# charset
[client]
default-character-set=utf8
[mysqld]
default-storage-engine=INNODB
character-set-server=utf8
collation-server=utf8_general_ci
![8b94cb4904db1aa77452d91d60b39e07.png](https://img-blog.csdnimg.cn/img_convert/8b94cb4904db1aa77452d91d60b39e07.png)
3、重启服务
【service mysqld restart】
![03afabd0253e15125b62b6781ed04364.png](https://img-blog.csdnimg.cn/img_convert/03afabd0253e15125b62b6781ed04364.png)
4、再次查看字符集
![1a09c915f19b37c731fff33bcbb7c32b.png](https://img-blog.csdnimg.cn/img_convert/1a09c915f19b37c731fff33bcbb7c32b.png)
可以看到,除了character_set_filesystem是binary外,其他都是utf8了,这样在web端也设置成utf8编码就可以正常输入数据库了。
5、修改已有数据库的字符集
如果之前新建的数据库字符集不对,可以通过以下命令修改。
语法格式:
alter database 数据库名 character set utf8;
【alter database mbz202002 character set utf8;】
![45d6a30d99b16f1e630c3b538321fa4a.png](https://img-blog.csdnimg.cn/img_convert/45d6a30d99b16f1e630c3b538321fa4a.png)
6、重启数据库服务器
具体请看上文。
7、再次导入数据
![9b91e505ab89ed32f620502c7e593cb4.png](https://img-blog.csdnimg.cn/img_convert/9b91e505ab89ed32f620502c7e593cb4.png)
可以看到数据导入正常。