Centos7 安装配置MySQL5.7

MySQL 简介

  • 是一个关系型数据库管理系统,由瑞典MySQL AB(创始人Michael Widenius)公司开发,2008被Sun收购(10亿美金),2009年Sun被Oracle收购。
  • 是一种关联数据库管理系统,将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。
  • 是开源的,所以你不需要支付额外的费用。
  • 是可以定制的,采用了GPL(GNU General Public License)协议,你可以修改源码来开发自己的MySQL系统。
  • 支持大型的数据库。可以处理拥有上千万条记录的大型数据库。
  • 支持大型数据库,支持5000万条记录的数据仓库,32位系统表文件最大可支持4GB,64位系统支持最大的表文件为8TB。
  • 使用标准的SQL数据语言形式。
  • 可以允许运行在多个系统上,并且支持多种语言。这些编程语言包括C、C++、Python、Java、Perl、PHP、Eiffel、Ruby和Tcl等。

离线安装

官网下载

  • 打开官网,点击DOWNLOADS https://www.mysql.com
    在这里插入图片描述
  • 点击社区版服务器 MySQL Community Server
    在这里插入图片描述
  • 选择适合自己的版本
    在这里插入图片描述
  • 开始下载
    在这里插入图片描述

如果Windows 系统下安装MySQL

解压安装程序

  • 将下载好的mysql文件上传到 Linux 服务器解压

tar -xvf mysql-5.7.31-1.el7.x86_64.rpm-bundle.tar

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

安装前卸载

  • 查看安装的 MySQL

rpm -qa | grep -i mysql

  • 查看安装的 MariaDB

rpm -qa | grep -i mariadb

  • 使用 rpm -e --nodeps 命令卸载 [ MySQL / MariaDB ] 通用
    在这里插入图片描述

删除残留文件 [ 必须删除,否则启动不了MySQL ]

  • 删除 rm -rf /var/lib/mysql 下所有文件
  • 删除日志文件 /var/log/mysqld.log
    在这里插入图片描述

执行查询命令检查依赖

rpm -qa|grep libaio
rpm -qa|grep net-tools

  • 如图 : [ 虚拟机有无需安装 ] - [ 阿里云服务器没有 ]
    在这里插入图片描述

执行安装命令

  • 在mysql的安装文件目录下执行:(必须按照顺序执行)
  • -i, --install 安装软件包
  • -v, --verbose 提供更多的详细信息输出
  • -h, --hash 软件包安装的时候列出哈希标记 (和 -v 一起使用效果更好),展示进度条
  1. 开始安装

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

  • 如图 - 可能会出现以下问题
    在这里插入图片描述

解决方案

在这里插入图片描述

  • 分析原因:这是由于yum安装了旧版本的GPG keys造成的 解决办法:后面加上 --force --nodeps 如: rpm -ivh MySQL-server-5.5.46-1.linux2.6.x86_64.rpm --force --nodeps 从 RPM 版本 4.1 开始,在安装或升级软件包时会检查软件包的签名。
  • CentOS安装rpm安装MySQL时爆出警告:
  • 根本原因:这是由于yum安装了旧版本的GPG keys造成的
  • 解决办法:后面加上 --force --nodeps 即可

rpm -ivh mysql-community-server-5.7.31-1.el7.x86_64.rpm --force --nodeps

在这里插入图片描述

查看是否安装成功

rpm -qa|grep -i mysql

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

查看安装的MySQL版本

mysqladmin --version

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

安装后的目录结构

参数 路径 解释 备注
–basedir /usr/bin 相关命令目录 mysqladmin mysqldump等命令
–datadir /var/lib/mysql/ mysql数据库文件的存放路径
–plugin-dir /usr/lib64/mysql/plugin mysql插件存放路径
–log-error /var/log/mysqld.log mysql错误日志路径
–pid-file /var/run/mysqld/mysqld.pid 进程pid文件
–socket /var/lib/mysql/mysql.sock 本地连接时用的unix套接字文件
/usr/share/mysql 配置文件目录 mysql脚本及配置文件
/etc/my.cnf mysql配置文件 cat /etc/my.cnf

服务启停相关脚本 : /etc/systemd/system/multi-user.target.wants/mysqld.service

启动命令

#启动
systemctl start mysqld
#关闭
systemctl stop mysqld
#重启
systemctl restart mysqld
#查看状态
systemctl status mysqld

在这里插入图片描述

设置开机启动

#查看服务是否自动启动(是:enabled| 否:disabled
systemctl list-unit-files|grep mysqld.service
#设置开机启动:如不是enabled可以运行如下命令设置自启动
systemctl enable mysqld
#重新加载服务配置
systemctl daemon-reload
#如果希望不进行自启动,运行如下命令设置
systemctl disable mysqld

查看进程

ps -ef | grep -i mysql

配置密码

设置root密码

  1. mysql 安装完成之后,在 /var/log/mysqld.log 文件中给 root 生成了一个默认密码。通过下面的方式找到root默认密码,然后登录mysql。

grep 'temporary password' /var/log/mysqld.log

在这里插入图片描述

  1. 连接 MySQL
    在这里插入图片描述
  2. 修改密码

ALTER USER 'root'@'localhost' IDENTIFIED BY '123456My!';
–或者
SET password FOR 'root'@'localhost'= password('123456My!');

  • 如图
    在这里插入图片描述
    注意: mysql5.7 默认安装了密码安全检查插件(validate_password),默认密码检查策略要求密码必须包含:大小写字母、数字和特殊符号,并且长度不能少于8位。否则会提示ERROR 1819 (HY000): Your password does not satisfy the current policy requirements错误,如下图所示:
    在这里插入图片描述

密码策略

  1. 如果不需要密码策略,在/etc/my.cnf文件中的最后添加如下配置禁用即可:

validate_password = off

  • 如图
    在这里插入图片描述
  1. 重新启动mysql服务使配置生效:

systemctl restart mysqld

修改密码

SET password = PASSWORD('654321');

在这里插入图片描述

忘记root密码

  1. /etc/my.cnf文件 [mysqld] 的段中加上一句:skip-grant-tables保存并且退出vim

mysql -u root

mysql> UPDATE mysql.user SET authentication_string = password('123456') WHERE User='root' AND Host = 'localhost';
mysql> FLUSH PRIVILEGES

字符集

  1. 查看字符集

SHOW VARIABLES LIKE 'character%';

  • 默认latin1字符编码,不支持中文, 如图 :
    在这里插入图片描述
  1. 设置字符集
  2. mysql配置文件:vim /etc/my.cnf
[client]
default-character-set=utf8
[mysqld]
character-set-server=utf8

在这里插入图片描述

  1. 重启服务

systemctl restart mysqld

  1. 查看

SHOW VARIABLES LIKE 'character%';

在这里插入图片描述

修改已有数据库符集

  • 已生成的库表字符集如何变更?
--修改已创建数据库的字符集
mysql> ALTER DATABASE 数据库名 CHARACTER SET 'utf8';
--修改已创建数据表的字符集
mysql> ALTER TABLE 表名 CONVERT TO  CHARACTER SET 'utf8';

客户端远程连接

  1. 如果是远程服务器需要配置安全组, 开放3306端口
    在这里插入图片描述
  2. 本地 Navicat 连接远程的MySQL, 遇到问题, 别慌继续往下看
    在这里插入图片描述
  3. 设置远程访问权限
  4. 默认root账户只能本机访问,需要设置其远程访问权限,或者,创建普通用户进行授权访问。
  5. 下面为放行root的远程连接权限的方式:

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '密码' WITH GRANT OPTION;

  • 如图
    在这里插入图片描述
  1. 重启服务器

systemctl restart mysqld

防火墙设置

远程访问前必须关闭防火墙或开放3306端口

#查看防火墙状态
firewall-cmd --state
#关闭防火墙
systemctl stop firewalld.service
#禁用开机启动
systemctl disable firewalld.service

启用防火墙并开放3306端口

#查看防火墙状态
firewall-cmd --state
#开启防火墙
systemctl start firewalld.service
#设置开机自启
systemctl enable firewalld.service

#设置开放的端口号
firewall-cmd --zone=public --add-port=3306/tcp --permanent
#重启防火墙
firewall-cmd --reload 
#查看开放的端口
firewall-cmd --list-ports
  • 测试连接成功
    在这里插入图片描述

用户管理

MySQL库中的user表

  • host : 表示连接类型
    • % :表示允许所有远程通过 TCP方式的连接
    • IP 地址: 如 (192.168.1.2,127.0.0.1),允许指定ip地址进行的TCP方式的连接
    • 机器名:允许指定网络中的机器名进行的TCP方式的连接
      *::1:IPv6的本地ip地址,等同于IPv4的 127.0.0.1,允许TCP方式的连接
    • localhost:本地方式通过命令行方式的连接 ,比如mysql -u xxx -p xxx 方式的连接。
  • user : 表示用户名
    • 同一用户通过不同方式链接的权限是不一样的。
  • password : 密码
    • 所有密码串通过 password(明文字符串) 生成的密文字符串。加密算法为MYSQLSHA1,不可逆 。
    • mysql 5.7 的密码保存到 authentication_string 字段中,不再使用password 字段。
  • select_priv , insert_priv等
    • 为该用户所拥有的权限。

创建用户

  1. 表示创建名称为 Lance 的用户,密码设为 123456;
CREATE USER Lance IDENTIFIED BY '123456';

在这里插入图片描述

  • 可以看到新添加的用户也是有远程连接数据库的权限的
    在这里插入图片描述

修改密码

  1. 修改某个用户的密码:
--mysql5.5
mysql> UPDATE mysql.user SET password = PASSWORD('1234') WHERE user = 'Lance'; 
--mysql5.7
mysql> UPDATE mysql.user SET authentication_string = PASSWORD('1234') WHERE user = 'Lance'; 
--必须用该命令才能生效。否则,需重启服务。
mysql> FLUSH PRIVILEGES;

修改用户

  1. 修改用户名:
 UPDATE mysql.user SET user = '蓝山' WHERE user = 'Lance';

删除用户

  1. 不要通过delete from user u where user=‘annie’ 进行删除,系统会有残留信息保留。
DROP user '蓝山'; 
  1. 删除用户时需要执行 FLUSH PRIVILEGES;让删除用户的操作及时生效

权限管理

普通的权限在user数据库中存储,特殊的权限在db数据库中存储

授权

  1. 语法:
GRANT 权限1, 权限2, …权限n ON 数据库名称.表名称 TO '用户名'@'用户地址' IDENTIFIED BY '连接口令';
  1. 给用户授 怎删改查 的权限
 GRANT SELECT, INSERT, DELETE, UPDATE ON db_test.* TO 'Lance'@'%';

在这里插入图片描述
3. 如果发现没有该用户,则会直接新建一个用户, 并且授权, [*表示所有权限 ]

 GRANT ALL PRIVILEGES ON *.* TO 'joe'@'%' IDENTIFIED BY '123'; 

查看权限

  1. 查看当前用户权限:
 SHOW GRANTS;

在这里插入图片描述
2. 查看某用户的全局权限:

SELECT * FROM mysql.user WHERE user = 'Lance' \G;

在这里插入图片描述

收回权限

  1. 语法:
mysql> REVOKE  权限1, 权限2, …权限n ON 数据库名称.表名称 FROM '用户名'@'用户地址';
  1. 收回 Lance 的 mysql 库下的所有表的插删改查权限
REVOKE SELECT, INSERT, UPDATE, DELETE ON *.* FROM 'Lance'@'%';
FLUSH PRIVILEGES;

Lance用户需要重新连接才会生效

在这里插入图片描述
3. 收回全库全表的所有权限

REVOKE ALL PRIVILEGES ON *.* FROM 'Lance'@'%';

在这里插入图片描述

FLUSH PRIVILEGES;

Lance用户需要重新连接才会生效

感谢阅读, 以上就是对 MySQL在Centos下安装使用的过程了, 如有什么更好的建议或方法 ,欢迎留言

猜你喜欢

转载自blog.csdn.net/Lance_welcome/article/details/107314575