MySQL基础知识(二)-超详细 Linux安装MySQL5.7完整版教程及遇到的坑

mysql,基础知识,详细,linux,安装,mysql5,完整版,教程,遇到 · 浏览次数 : 1282

小编点评

**解压结果:** ``` mysql-5.7.37-linux-glibc2.12-x86_64.tar.gz4 mysql-5.7.37-linux-glibc2.12-x86_64.tar mysql-5.7.37-linux-glibc2.12-x86_64.test.tar.gz4 ``` **步骤 1:重命名目录** ``` mv mysql-5.7.37-linux-glibc2.12-x86_64 mysql习惯上来说,我们会将文件夹重命名为mysql6.3创建mysql用户组和用户输入如下命令: ``` groupadd mysqluseradd -r -g mysql mysql ``` **步骤 2:创建数据目录并赋予权限** ``` mkdir -p /data/mysql chown mysql:mysql -R /data/mysql ``` **步骤 3:修改配置文件my.cnf** ``` # 默认内容注释掉,然后删除 [mysqld] bind-address=0.0.0.0 port=3306 user=mysqlbasedir=/usr/local/mysqldatadir=/data/mysqlsocket=/tmp/mysql.socklog-error=/data/mysql/mysql.errpid-file=/data/mysql/mysql.pid #其他配置... ``` **步骤 4:初始化数据库** ``` 2. 初始化。 ./mysqld --defaults-file=/etc/my.cnf --basedir=/usr/local/mysql/ --datadir=/data/mysql/ --user=mysql --initialize ``` **步骤 5:再次远程连接测试** ``` 1. 使用工具进行连接,输入好登录行,点击“测试连接” ``` **步骤 6:执行mysql命令** ``` 1. 你可能也发现了,宏哥会用sudo这个命令,这是因为宏哥现在登录的用户admin,有些时候需要root用户权限,所以才会有sudo命令出现。 2. 通过命令下载的安装包,下载完成后,要注意下载安装包和官网安装大小的比较,如果差不多,那就没有问题,但是相差较大的话,可能就是你下载的安装包不完整,需要重新下载,万一你为了省事没有重新下载的话,直接安装就会安装失败,此时再次安装就需要你把系统中的MySQL全部卸载干净,否则再次下载完整的安装包也有可能安装不成功。 ```

正文

1.简介

 我们经常会在Linux上安装MySQL数据库,但是安装的时候总是会这里错,那里错,不顺利,今天整理了一下安装流程,连续安装来了两遍,没有遇到什么大错误,基本上十分钟左右可以搞定,教程如下。写着一篇文章主要是答应别人要帮忙给他在Linux上安装一下mysql(MySQL是5.7,Linux是centos7),然后自己提前实践一下,不要关键时刻掉链子。古有刘备三顾茅庐,今有宏哥三连数据库。快来看看发生什么事了!!!

2.环境

①Linux版本: Linux version 3.10.0-1127.8.2.el7.x86_64

②MySQL版本: mysql-5.7.37-linux-glibc2.12-x86_64.tar

2.1linux下如何查看已安装的centos版本信息

1.Linux查看当前操作系统版本信息 cat /proc/version

Linux version 2.6.32-696.el6.x86_64 (mockbuild@c1bm.rdu2.centos.org) (gcc version 4.4.7 20120313 (Red Hat 4.4.7-18) (GCC) ) #1 SMP Tue Mar 21 19:29:05 UTC 2017

2.Linux查看版本当前操作系统内核信息 uname -a

Linux localhost.localdomain 2.4.20-8 #1 Thu Mar 13 17:54:28 EST 2003 i686 athlon i386 GNU/Linux

3.linux查看版本当前操作系统发行信息 cat /etc/issue 或 cat /etc/centos-release

CentOS release 6.9 (Final)

4.Linux查看cpu相关信息,包括型号、主频、内核信息等 cat /etc/cpuinfo

3.准备安装包

1.从MySQL官网下载。下载地址:https://dev.mysql.com/downloads/mysql/5.7.html#downloads  宏哥下载的是TAR。如下图所示:

 2.点击“No thanks, just start my download.”,如下图所示:

4.检测系统是否自带安装 MySQL和mariadb

为了避免不必要的麻烦,在安装前宏哥首先检测系统是否自带安装 MySQL和mariadb。

4.1检查命令

rpm -qa | grep mysql

rpm -qa | grep mariadb

4.2检查结果查看

从上图中可以看出,宏哥没有其中任何一个。

如果有,输入命令,回车,会返回如下结果:

mysql-libs-5.1.52-1.el6_0.1.x86_64

mariadb-libs-5.5.56-2.el7.x86_64

4.3卸载

如果出现上边返回结果,证明有,要先进行卸载,分别输入如下命令:

rpm -e mysql-libs-5.1.52-1.el6_0.1.x86_64  // 普通删除模式

rpm -e --nodeps mysql-libs-5.1.52-1.el6_0.1.x86_64  // 强力删除模式,如果使用上面命令删除时,提示有依赖的其它文件,则用该命令可以对其进行强力删除

rpm -e --nodeps mariadb-libs-5.5.56-2.el7.x86_64

5.上传安装包

你如果是将安装包下载到本地电脑了,就需要通过finalShell等其他可以远程连接Linux的客户端将安装包上传到服务器。宏哥这里为了省事或者偷懒直接使用命令将安装包直接下载到服务器上。

5.1服务器上下载MySQL5.7

1.下载MySQL5.7,输入如下命令

cd /usr/local/
wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.37-linux-glibc2.12-x86_64.tar

2.修改为自己需要的版本号,当然如果没有wget命令的话可以执行下面的命令安装。

yum -y install wget

3.出现“Complete”,说明wget下载安装成功。

4.然后使用wget继续下载MySQL5.7的安装包,输入第一步的命令,如下图所示:

 

5.等待一段时间后,下载安装包完成,如下图所示:

6.查看安装包大小并和官网安装包大小作比较,大小差不多,如下图所示:

6.MySQL5.7安装

6.1解压安装包

1.输入如下命令,解压mysql安装包:

tar -xvf mysql-5.7.37-linux-glibc2.12-x86_64.tar

2. 5.7.37的版本第一次解压会得到两个版本,还有一个是test,这里直接用非test的。

3.解压非test的压缩包,输入如下命令:

tar -zxvf mysql-5.7.37-linux-glibc2.12-x86_64.tar.gz

4.查看解压后结果,如下图所示:

6.2重命名目录

输入如下命令:

mv mysql-5.7.37-linux-glibc2.12-x86_64 mysql

习惯上来说,我们会将文件夹重命名为mysql

6.3创建mysql用户组和用户

输入如下命令:

groupadd mysql
useradd -r -g mysql mysql

我们必须创建mysql用户,因为mysql的初始化需要。

6.4创建数据目录并赋予权限

输入如下命令:

mkdir -p /data/mysql #创建目录
chown mysql:mysql -R /data/mysql #赋予权限

通常都会将数据存放目录外置到别的目录,这样子升级mysql不会影响历历史数据。

6.5修改配置文件

mysql有一个配置文件叫做my.cnf,我们会在配置文件中指定端口,数据存放目录,以及编码格式。输入如下命令:

vim /etc/my.cnf

把默认的内容注释掉后者删掉,宏哥推荐最好是注释掉,如果你要删掉,最好拷贝一下做一下备份。改为下面的内容即可。

[mysqld]
bind-address=0.0.0.0
port=3306
user=mysql
basedir=/usr/local/mysql
datadir=/data/mysql
socket=/tmp/mysql.sock
log-error=/data/mysql/mysql.err
pid-file=/data/mysql/mysql.pid
#character config
character_set_server=utf8mb4
symbolic-links=0
explicit_defaults_for_timestamp=true
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8

这里要注意,直接黏贴linux界面最后几行可能会自动加上#,一定要检查内容是否一致。

6.6初始化数据库

1.进入MySQL的bin目录。输入如下命令:

cd /usr/local/mysql/bin/

2.初始化。输入如下命令:

./mysqld --defaults-file=/etc/my.cnf --basedir=/usr/local/mysql/ --datadir=/data/mysql/ --user=mysql --initialize

这里要指定配置文件,根目录,数据文件,用户。

6.7查看root用户密码

1.注意此时仍然在bin目录下,输入如下命令:

cat /data/mysql/mysql.err

初始化完成后,默认会生成一个root用户的密码,最后一行,如下位置。这里要记住,后面登录的时候需要使用。

 6.8启动mysql服务

1.先将mysql.server放置到/etc/init.d/mysql中

cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql

2.启动

service mysql start

 

到这里说明MySQL已经安装成功了。

7.修改密码

看到那么复杂的密码是不是头都大了,输入麻烦而且不是很好记忆。那么宏哥就在这里将密码修改一下将其修改成:123456。步骤如下:

1.首先登陆MySQL,前面的那个是随机生成的。登录mysql,修改root用户的密码

./mysql -u root -p #bin目录下

2.密码为初始化的时候生成的随机密码串(这里的密码就是前边宏哥让你记住的那个密码)。

3.登录后,然后执行下边三条SQL语句修改密码,在执行下面三步操作,然后重新登陆。

SET PASSWORD = PASSWORD('123456');
ALTER USER 'root'@'localhost' PASSWORD EXPIRE NEVER;
FLUSH PRIVILEGES;

4.依次执行上面三条命令,这里密码设置为123456,当然生产上要符合密码规范。

好了到这里就安装好啦,我们来远程连接下。

8.远程连接

8.2首次远程连接(第一次)

1.这个时候如果使用远程连接,你会发现无法连接。报错如下图所示:

2.出现上图报错的主要原因是:额。肯定是防火墙没有关,也就是你MySQL服务对外的端口3306没有开放。因为宏哥CentOS7,默认是firewalld防火墙,宏哥这是在演示,这里直接关闭,输入如下命令:

systemctl stop firewalld

3.正式环境下需要开放3306端口即可,绝对不允许向上一步简单、粗暴方法,否则后果自负。依次输入如下命令:

① 查看防火墙的状态:

systemctl status firewalld

② 开放3306端口:

firewall-cmd --zone=public --add-port=3306/tcp --permanent

③ 重启防火墙:

systemctl restart firewalld.service

8.2再次远程连接(第二次)

1.当宏哥将防火墙关闭,或者端口开放后,仍然连不上,报错如下图所示:

2.报上图错误,额,这是因为我们的root用户默认只能够本机本地访问,这里要开放下,登录mysql,执行如下三条命令即可.

①首先输入如下命令登录MySQL,输入密码。

./mysql -u root -p #bin目录下

②执行下边三条SQL语句

use mysql #访问mysql库
update user set host = '%' where user = 'root'; #使root能再任何host访问
FLUSH PRIVILEGES;

8.3再次连接测试(第三次)

1.使用工具进行连接,输入好登录行,点击“测试连接”如下图所示:

好啦,古有刘备三顾茅庐,今有宏哥三连数据库。到这里才是最终的打大功告成!

9.执行mysql命令

1.你可能也发现了,宏哥每次执行mysql命令,都需要进入mysql的bin目录,这样有点麻烦不方便。但是不进入就会报如下图所示的错误:

2.如果不希望每次进到bin目录下使用mysql命令,则执行一下命令。你需要输入如下命令:

ln -s  /usr/local/mysql/bin/mysql    /usr/bin

3.然后,不进入bin目录,执行mysql命令,没有报第一步的错误。如下图所示:

10.小结

1.Linux执行tar解压报错tar: Error is not recoverable: exiting now

解决方案有两种。

方案一:去掉解压参数中的z,执行命令改为:tar -xvf xx.tar.gz。

该方案的原因是:下载的文件并不是“通过 gzip 过滤归档”所以添加参数z就无法正常解压。

如果该方案依旧无法进行正常解压那就尝试第二中方案。

方案二:重新下载或上传压缩文件

本方案是针对下载的压缩文件并不完整,也就是说并没有正常下载完成。可以换个方式重新下载。比如通过wget下载之后,执行出现上面问题。可以尝试在其他机器上直接下载,然后上传到目标服务器上再执行上面的解压命令,即可。

2.小伙伴们或者童鞋们,会发现宏哥会用sudo这个命令,这是因为宏哥现在登录的用户admin,有些时候需要root用户权限,所以才会有sudo命令出现。

3.通过命令下载的安装包,下载完成后,要注意下载安装包和官网安装大小的比较,如果差不多,那就没有问题,但是相差较大的话,可能就是你下载的安装包不完整,需要重新下载,万一你为了省事没有重新下载的话,直接安装就会安装失败,此时再次安装就需要你把系统中的MySQL全部卸载干净,否则再次下载完整的安装包也有可能安装不成功。

与MySQL基础知识(二)-超详细 Linux安装MySQL5.7完整版教程及遇到的坑相似的内容:

MySQL基础知识(二)-超详细 Linux安装MySQL5.7完整版教程及遇到的坑

1.简介 我们经常会在Linux上安装MySQL数据库,但是安装的时候总是会这里错,那里错,不顺利,今天整理了一下安装流程,连续安装来了两遍,没有遇到什么大错误,基本上十分钟左右可以搞定,教程如下。写着一篇文章主要是答应别人要帮忙给他在Linux上安装一下mysql(MySQL是5.7,Linux是

MySQL基础4-数据查询

一、DQL介绍 DQL全称:Data Query Language(数据查询语言),用来查询数据库中表的记录。 关键字:select 二、DQL语法 select 字段列表 from 表名列表 where 条件列表 group by 分组字段列表 having 分组后条件列表 order by 排序

MySQL基础5-用户及权限管理

一、介绍 DCL:Data Control Language(数据控制语言),用来管理数据库用户,控制数据库的访问,权限。 二、用户管理 1、查询用户 语法: 1、use MySQL; 2、select * from user; 默认只有四个账户。 2、创建用户 语法:create user '用户

MySQL基础9-事务基础

一、事务简介 事务是一组操作的集合,它是一个不可分割的工作单位,事务会把所有操作作为一个整体一起向系统提交或者撤销操作请求,即这些操作要么同时成功,要么同时失败。mysql的事务默认是自动提交的,也就是说,当执行一条DML语句,Mysql会立即隐式的提交事务 二、事务操作 2.1 查看事务提交方式

MySql索引下推知识分享

作者:刘邓忠 Mysql 是大家最常用的数据库,下面为大家带来 mysql 索引下推知识点的分享,以便巩固 mysql 基础知识,如有错误,还请各位大佬们指正。 1 什么是索引下推 索引下推 (Index Condition Pushdown,索引条件下推,简称 ICP),是 MySQL5.6 版本

MYSQL-INNODB索引构成详解

作者:郑啟龙 摘要: 对于MYSQL的INNODB存储引擎的索引,大家是不陌生的,都能想到是 B+树结构,可以加速SQL查询。但对于B+树索引,它到底“长”得什么样子,它具体如何由一个个字节构成的,这些的基础知识鲜有人深究。本篇文章从MYSQL行记录开始说起,层层递进,包括数据页,B+树聚簇索引,B

1.数据库的连接、创建会话与模型

SQLAlchemy 是一个强大的 Python 库,它让你可以用一种面向对象的方式来操作数据库(ORM 技术)。 在学习 SQLAlchemy 的过程中,需要一些基础知识的沉淀:Python基础、Python面向对象、MySQL数据库的诸多知识点…… 在此之前,你可能需要了解传统执行SQL语句和使

MySQL基础6-常用数据库函数

一、字符串函数 1、常见MySQL内置字符串函数 concat(s1,s2,s3,...):字符串拼接,将s1,s2,s3...等拼接成一个字符串 lower(str):将字符串str全部转为小写 upper(str):将字符串str全部转为大写 lpad(str,n,pad):左填充,将字符串pa

MySQL基础7-约束

一、约束的基本概念 1、概念:约束是作用于表中字段上的规则,用于限制储存在表中的数据 2、目的:保证数据库中的数据的正确性,有效性和完整性 3、分类 非空约束(not null):限制该字段的数据不能为null 唯一约束(unique):保证该字段的所有数据都是唯一,不重复的 主键约束(primar

MySQL基础8-多表查询

一、多表关系 一对多或者多对一 案例:部门与员工的关系 关系:一个部门对应多个员工,一个员工对应一个部门(不考虑跨部门的特殊情况) 实现:在多的一方建立外键,指向一的一方的主键,这里员工表是多的的一方,部门表是一的一方 多对多 案例:学生与课程的关系 关系:一个学生可以选修多门课程,一门课程也可以供