MySQL 5.7 for Linux安装与配置(超详细)

一、MySQL的简介

MySQL 是一个关系型数据库管理系统,由瑞典 MySQL AB 公司开发,目前属于 Oracle 公司。

MySQL 是一种关联数据库管理系统,将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性,并且很容易安装和使用。

MySQL 是开源的,所以你不需要支付额外的费用(实际上是社区版免费,企业版收费)。

MySQL 是可以定制的,采用了 GPL 协议,你可以修改源码来开发自己的 Mysql 系统。

MySQL 支持大型的数据库,可以处理拥有上千万条记录的大型数据库。

MySQL 使用标准的SQL数据语言形式。

MySQL 可以允许于多个系统上,并且支持多种语言。这些编程语言包括 C、C++、Python、Java、Perl、PHP、Eiffel、Ruby 和 Tcl 等。

MySQL 支持大型数据库,支持 5000 万条记录的数据仓库,32位系统表文件最大可支持 4 GB,64 位系统支持最大的表文件为 8 TB。

二、MySQL Linux版的安装与配置

(一)操作环境声明

本节教程的操作环境为:

  • 阿里云的云服务器,使用Xshell连接到服务器,使用Xftp进行文件传输
  • 操作系统:CentOS 7.7 64位
  • MySQL版本:MySQL 5.7.16, for Linux on x86_64
  • 教程中以的代码行 " # " 开头的表示是linux终端模式下,以 " > " 开头的表示在MySQL环境下

(二)安装步骤

1 检查工作

1.1 删除已有的相关包

在安装前需要确定现在这个系统有没有 MySQL,如果有那么必须卸载。尤其是新的 CentOS 7 系统,它自带mariaDB数据库,所以需要卸载掉。

  • 查找已安装的MySQL软件包:
rpm -qa|grep mysql
  • CentOS7下还需要查找是否存在mariadb包:
rpm -qa|grep mariadb
  • 如果输入上述两个命令后都输出存在有包,则需要执行删除命令。

例如,前两步中终端输出了“mysql-libs-5.1.73-1.el6.x86_64”和“mariadb-libs-5.5.56-2.el7.x86_64”,则:

rpm -e --nodeps mysql-libs-5.1.73-1.el6.x86_64
rpm -e --nodeps mariadb-libs-5.5.56-2.el7.x86_64

1.2 提升权限

由于 MySQL 安装过程中,会通过 MySQL 用户在 /tmp 目录下新建 tmp_db 文件,所以需要给 /tmp 目录较大的权限:

chmod -R 777 /tmp

1.3 检查依赖

这一步需要检查系统中是否存在一些安装MySQL时需要的依赖库。因为考虑到大家有些是在虚拟机上安装的Linux系统。如果安装系统的时候用的是最小安装等原因,可能就不存在这些库。

  • 执行两个查询命令看是否存在依赖库:
rpm -qa|grep libaio
rpm -qa|grep net-tools
  • 如果不存在则需要安装:
yum -y install libaio net-tools
2 准备安装包

2.1 准备安装包方法 1

  • 首先进入到 /opt目录:
cd /opt
  • 使用 wget下载并解压,在下载的过程中会显示进度条,包含 (下载完成百分比,已经下载的字节,当前下载速度,剩余下载时间) :
wget http://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.16-1.el7.x86_64.rpm-bundle.tar
tar -xvf mysql-5.7.16-1.el7.x86_64.rpm-bundle.tar

2.2 准备安装包方法 2

  • 点击进入 官网 (点击此处) 可以直接下载安装包,或者使用本文作者提供的 网盘地址 (点击此处,提取码: fiqc) 进行下载。

  • 下载完成后,解压,会看到很多 rpm 包,其中的 4 个是必要的:

    mysql-community-common-5.7.16-1.el6.x86_64.rpm
    mysql-community-libs-5.7.16-1.el6.x86_64.rpm
    mysql-community-client-5.7.16-1.el6.x86_64.rpm
    mysql-community-server-5.7.16-1.el6.x86_64.rpm

​ 这 4 个安装包通过 Xtfp 复制到 /opt下:
image-20210412151216668

3 开始安装

使用 rpm 命令按顺序依次安装 4 个包:

rpm -ivh mysql-community-common-5.7.16-1.el7.x86_64.rpm 
rpm -ivh mysql-community-libs-5.7.16-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-5.7.16-1.el7.x86_64.rpm 
rpm -ivh mysql-community-server-5.7.16-1.el7.x86_64.rpm

image-20210412151223700
注意:1. 安装 server 会比较慢;
   2. 如果前面第 1.3 步没检查好,在安装 mysql-community-server 会报错。

4 查看MySQL 的安装版本

执行 " mysqladmin –version " 命令,类似 " java -version " 如果输出版本消息,即为安装成功。
image-20210412151230355

(三)相应配置

5 初始化 MySQL
  • MySQL 5.7下载完后需要手动初始化:
mysqld --initialize --user=mysql
  • 查看并记住初始密码,“root@localhost:” 后面的就是初始化密码,要记下来,后面连接数据库会用到。
cat /var/log/mysqld.log | tail -n 10

image-20210412151241435

6 启动 MySQL 服务
  • 启动服务
systemctl start mysqld.service
  • 关闭服务
systemctl stop mysqld.service
  • 查看服务状态
systemctl status mysqld

image-20210412151246509

  • 查看是否自启动
systemctl list-unit-files|grep mysqld.service

image-20210412151251842

  • 设置自启动
systemctl enable mysqld.sercice
7 首次登陆
  • 首次登陆通过 “mysql -uroot -p” 进行登录,在 “Enter password:” 后输入初始化密码。正确输入密码后输出如下所示则表明成功连接数据库:
    image-20210412151258243

  • 因为初始化密码默认是过期的,必须修改新密码后才能正常使用数据库:

ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';

注意:密码太简单可能会报以下错:

ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

如果想设置简单的密码,可以根据自己需要来设置以下参数:

set global validate_password_policy=LOW; // 设置密码的验证强度等级为低(LOW)
set global validate_password_length=6; // 设置密码长度为6,最小为4
8 修改字符集
  • 输入以下语句可以发现数据库和服务端的默认字符都是latin1,如果不修改容易出现乱码:
show variables like 'character%';

image-20210412151305503

  • 输入 "vim /etc/my.cnf " 或用Xftp打开 "/etc/my.cnf " 文件进行编辑,在最后加上
character_set_server=utf8
init_connect=’SET NAMES utf8’

image-20210412151538784

  • 重启MySQL服务
systemctl restart mysqld
  • 重新连入数据库后修改数据库的字符集(其中mydb为数据库名)
alter database mydb character set 'utf8';
  • 修改数据库表的字符集(其中mytbl为表名)
alter table mytbl convert to character set 'utf8';

image-20210412151545657

9 远程访问
  • 输入以下语句查看MySQL的用户信息:
    image-20210412151551524
  • host:表示连接类型

    • %:表示所有远程通过 TCP方式的连接
    • IP地址:如 (192.168.1.2,127.0.0.1) 通过制定ip地址进行的TCP方式的连接
    • 机器名:通过制定i网络中的机器名进行的TCP方式的连接
    • ::1:IPv6的本地ip地址 等同于IPv4的 127.0.0.1
    • localhost:本地方式通过命令行方式的连接 ,比如mysql -u xxx -p 123xxx 方式的连接。
  • user:表示用户名

    同一用户通过不同方式链接的权限是不一样的。

  • authentication_string:密码

    所有密码串通过password (明文字符串)生成的密文字符串。加密算法为MYSQLSHA1,不可逆。MySQL 5.7的密码保存到authentication_string字段中不再使用password字段(在5.5中使用)。

​ 可见都是localhost,想要用Navicat等管理工具连过来需要增加远程用户,否则远程连接会报以下错误:
image-20210412151559514

​ 因此下面给出了用户授权、创建用户、删除用户和修改密码的命令。

  • 用户授权命令(该命令执行授权时如果发现没有指定的用户,则会直接创建一个新用户来完成授权):
grant 权限1,…权限n on 数据库名.表名 to 用户名@用户地址 identified by ‘密码’;

例如,授予通过网络方式登录的root用户,有对所有库、所有表的全部权限,密码设为”newpwd123”:

grant all privileges on *.* to root@'%' identified by 'newpwd123';
  • 创建用户,例如名为root的用户,密码设为123abc:
create user root identified by '123abc';
  • 修改用户名
update mysql.user **set** user='li4' where user='wang5';
flush privileges;  # 所有通过user表的修改,必须用该命令才能生效。
  • 删除用户
drop user user@host;
  • 修改当前用户的密码
set password = password('new_password')
  • 修改某个用户的密码
update mysql.user set password=password('new_password') where user='name';
flush privileges; # 所有通过 user表的修改,必须用该命令才能生效。
10 相关目录介绍
文件位置
客户端程序及脚本/usr/bin
mysqld服务/usr/sbin
配置文件/etc/my.cnf
数据目录/var/lib/mysql
错误日志/var/log/mysqld.log
私有安全文件/var/lib/mysql-files
系统初始化脚本/etc/init.d/mysqld
系统服务mysqld
Pid文件/var/run/mysql/mysqld.pid
Socket/var/lib/mysql.mysqld.pid
字典目录/var/lib/mysql-keyring
操作手册/usr/share/man
头文件/usr/include/mysql
LIB库/usr/lib/mysql
共享文件/usr/share/mysql
11 可能出现的其它错误
错误一:在第 6 步时,如果出现以下报错信息:

image-20210412150522732

看报错信息里说 " --initialize specified but the data directory has files in it. Aborting. ",说明mysql的数据目录已经存在了。可能是之前安装过mysql,卸载的时候没卸干净,没有连着数据目录一起删除。

1. 最简单的解决方法

已知MySQL的数据目录默认是 /var/lib/mysql,则我们可以对它进行修改:

终端输入 " vim /etc/my.cnf " 对配置文件进行编辑,修改datadir为自己想存放数据的路径。
image-20210412150528323

2. 最彻底的解决方法

  1. 搜索出带 " mysql " 的所有目录:
find / -name mysql

image-20210412150631456

  1. 将这些目录递归删除:
rm -rf /etc/logrotate.d/mysql
rm -rf /var/lib/mysql
rm -rf /var/lib/mysql/mysql
rm -rf /usr/bin/mysql
rm -rf /usr/lib64/mysql
rm -rf /usr/share/mysql
  1. 重新开始安装。
错误二:依然无法远程连接MySQL服务

检查自己的服务器是否开放了MySQL服务的访问端口。如下图是我的云服务器的安全组规则设置,开放了3306端口:
image-20210412150820721
image-20210412150825826

  1. 将这些目录递归删除:
rm -rf /etc/logrotate.d/mysql
rm -rf /var/lib/mysql
rm -rf /var/lib/mysql/mysql
rm -rf /usr/bin/mysql
rm -rf /usr/lib64/mysql
rm -rf /usr/share/mysql
  1. 重新开始安装。
错误二:依然无法远程连接MySQL服务

检查自己的服务器是否开放了MySQL服务的访问端口。如下图是我的云服务器的安全组规则设置,开放了3306端口:

在这里插入图片描述
在这里插入图片描述

  • 44
    点赞
  • 190
    收藏
    觉得还不错? 一键收藏
  • 19
    评论
好的,以下是 MySQL 5.7.37 的安装及配置详细教程: 1. 前置条件: 安装 MySQL 5.7.37 需要以下环境:CentOS 7 系统、一个具有管理员权限的用户、yum 命令已经安装。 2. 安装 MySQL 5.7.37: 使用以下命令在 CentOS 7 上安装 MySQL 5.7.37: sudo yum localinstall https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm sudo yum install mysql-community-server 3. 启动 MySQL 5.7.37: 使用以下命令启动 MySQL 5.7.37: sudo systemctl start mysqld 4. 配置 MySQL 5.7.37: 使用以下命令配置 MySQL 5.7.37: sudo mysql_secure_installation 该命令会提示您输入 MySQL root 用户的密码,如果您是第一次使用此命令,则密码为空。然后您需要根据提示进行配置,包括设置 root 密码、删除匿名用户、禁用 root 远程登录等等。 5. 打开 MySQL 5.7.37 防火墙规则: 使用以下命令打开 MySQL 5.7.37 防火墙规则: sudo firewall-cmd --add-service=mysql --permanent sudo firewall-cmd --reload 6. 登录 MySQL 5.7.37: 使用以下命令登录 MySQL 5.7.37: sudo mysql -u root -p 输入之前设置的 MySQL root 用户的密码,即可登录成功。 7. 测试 MySQL 5.7.37: 使用以下命令测试 MySQL 5.7.37 是否已经正常工作: sudo systemctl status mysqld 如果状态为“active (running)”则说明 MySQL 5.7.37 已经成功安装并开始运行了。 希望以上内容对您有所帮助。如果您有其他问题,请随时提出。
评论 19
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值