MySQL安装配置-5.7.25版本

前言

了解MySQL

什么是MySQL?

MySQL 是一个广泛使用的开源关系型数据库管理系统(RDBMS),它以其高性能、可靠性和易用性著称。MySQL 支持 SQL(Structured Query Language)语言,这是一种用于管理和处理关系数据库的标准语言。MySQL 适用于从小型个人项目到大型企业级应用程序的各种场景。

MySQL的特点

1.开源

MySQL 是一个开源数据库,这意味着它的源代码是公开的,任何人都可以免费下载和使用它。此外,社区版提供了大量的插件和扩展,增强了其功能性和灵活性。

2.跨平台

MySQL 可以运行在多种操作系统上,包括 Windows、Linux 和 macOS。

3.高性能

MySQL 以其高速度和高效率闻名。它支持多种存储引擎,如 InnoDB 和 MyISAM,可以根据应用程序的需求选择合适的存储引擎。

4.可靠性

MySQL 提供了事务支持、备份恢复机制和数据一致性保证等功能,使得它成为一个可靠的数据存储解决方案。

5.易于使用

MySQL 提供了一个直观的命令行界面和图形化工具(如 phpMyAdmin),使得管理和操作数据库变得简单。

6.支持多种编程语言

MySQL 提供了大量的驱动程序,支持 Java、Python、PHP、C# 等多种编程语言,方便开发者集成数据库功能。

7.安全性

MySQL 支持用户认证、权限控制和加密等功能,可以保护数据的安全。

8.可扩展性

MySQL 支持水平扩展(如复制和分片)和垂直扩展(如增加硬件资源),可以根据需求进行灵活扩展。

MySQL的主要组件

1.客户端工具

包括命令行工具 mysql、图形化工具如 phpMyAdmin 和 MySQL Workbench 等。

2.服务器

MySQL 服务器负责存储和管理数据,提供 SQL 语言的支持。

3.存储引擎

MySQL 支持多种存储引擎,如 InnoDB、MyISAM、Memory 等。不同的存储引擎有不同的特性,可以根据应用场景选择合适的存储引擎。 

4.复制

MySQL 支持主从复制和多主复制,可以实现高可用性和负载均衡。

5.分区

MySQL 支持数据分区,可以提高查询性能和管理大规模数据集。

MySQL的应用场景

MySQL 可以应用于各种场景,包括但不限于:

  • Web 应用:许多流行的 Web 应用框架和内容管理系统(如 WordPress、Drupal 和 Joomla)都使用 MySQL 作为默认数据库。
  • 企业应用:MySQL 在企业环境中用于存储关键业务数据,支持事务处理和复杂的查询。
  • 物联网(IoT):MySQL 可以处理来自大量设备的数据,支持实时数据分析。
  • 大数据处理:虽然 MySQL 不是专门的大数据处理工具,但它可以与其他大数据技术(如 Hadoop 和 Spark)集成,用于存储和处理数据。

MySQL的安装和配置

MySQL 可以在多种操作系统上安装和配置。安装过程通常涉及以下几个步骤:

  1. 下载 MySQL:从官方网站或其他可信来源下载 MySQL 安装包。
  2. 安装 MySQL:根据操作系统选择合适的安装方法,如使用包管理器(如 yumapt)或手动解压安装包。
  3. 配置 MySQL:编辑配置文件(如 /etc/my.cnf),设置必要的参数,如数据目录、日志文件、最大连接数等。
  4. 启动 MySQL 服务:使用系统的服务管理工具(如 systemctl)启动 MySQL 服务。
  5. 安全配置:使用 mysql_secure_installation 脚本进行安全配置,如设置 root 密码、删除匿名用户等。
  6. 创建用户和数据库:登录 MySQL 并创建用户、数据库,授予必要的权限。

以上是安装MySQL和配置的大致步骤,下面我会详细演示和讲解MySQL的安装和配置。

上传MySQL安装包

这里的上传路径为/root/software下

上传方式可通过本地拖拽文件上传,也可通过连接xftp来拖拽至xshell命令行里实现

上传成功后,让我们进行下一步

解压MySQL安装包

解压至/root/software目录下

使用unzip命令行工具解压缩ZIP格式文件,它可以用来解压缩.zip文件,并且支持多种选项来定制解压行为。

unzip mysql-5.7.25-1.el7.x86_64.rpm.zip -d software/

常用选项
-l:列出压缩文件中的内容而不解压。
-d 目标目录:将文件解压到指定的目标目录。
-n:在遇到已存在的文件时不覆盖。
-o:在遇到已存在的文件时总是覆盖。
-v:显示压缩文件的版本信息。

f3d239b6e2bb472b8d22ecc5e35b7f79.png

解压完毕后,得到一个mysql-5.7.25的目录,cd进入

cd  mysql-5.7.25/

81aa7a181c9c463dbfd07c5f5ae83771.png

可以看到有五个包,接下来我们需要按顺序安装这五个包

在此目录下使用rpm -ivh命令来安装

rpm -ivh是一个用于安装 RPM (Red Hat Package Manager)软件包的命令。RPM 是一种在 Linux 系统上管理软件包的方法,主要用于 Red Hat 及其衍生发行版(如 CentOS、Fedora 等)。

#基本语法
rpm -ivh [选项] 包名.rpm

选项解释
-i:安装软件包。
-v:显示详细信息(verbose)
-h:显示进度条(hash marks)

常用选项
--nodeps:忽略依赖关系,直接安装软件包。
--force:强制安装,即使软件包的文件已经存在于系统中。
--test:测试安装而不实际安装。
--replacefiles:替换冲突的文件。
--replacepkgs:替换整个软件包。

使 用 rpm -ivh 依 次 安 装 mysql-community-common、mysql-community- libs、mysql-community-libs-compat 、 mysql-community-client 和 mysql-community-server包

注:一定要按照以上顺序安装,不能颠倒!!!

第一个

32b665fd314d425281e96bd4deaf0343.png

没问题

第二个

c347cfc24c0b485f8229882494c68b74.png

第三个

51b6c847096a4ee6814fc7d3b35e5aa7.png

第四个

2be2a6ab94d14104a4051b889b95de1b.png

最后一个

5fa6d8ff37004ed69549d69f750f03ec.png

安装完成

怎么查看安装上的包

rpm -qa | grep mysql

8e2a80677d2f4e05ab0d8952b276563f.png

五个包已经安装上了

MySQL用户初始化和启动数据库

切换到MySQL用户

由于MySQL的一些操作可能需要以MySQL的用户身份进行,因此首先切换到MySQL用户:

sudo su - mysql

切换成功,这将让你以MySQL用户的身份执行后续命令。

初始化MySQL数据库

初始化 MySQL 数据库通常是指创建初始的数据目录和相关文件。在大多数情况下,安装过程会自动完成这些步骤。

我们可以先检查一下MySQL有没有初始化

通过检查数据目录来判断MySQL有没有初始化

首先,检查MySQL数据目录/var/lib/mysql是否存在,并查看其中的内容:

ls -la /var/lib/mysql

分析目录内容

如果数据目录中包含以下内容,则说明 MySQL 已经进行了初始化:

ibdata1:这是 InnoDB 存储引擎的系统表空间文件。
mysql 目录:这是 MySQL 系统数据库的目录,包含一些重要的表,如用户表 mysql.user。
其他数据库目录:如果之前创建过数据库,还会有其他的数据库目录。

示例输出

以下是可能的输出示例:

total 20

drwxr-xr-x. 2 mysql mysql 4096 Oct 13 20:26 . drwxr-xr-x. 6 root root 4096 Oct 13 20:26 .. drwxr-x---. 2 mysql mysql 4096 Oct 13 20:26 auto.cnf

drwxr-x---. 2 mysql mysql 4096 Oct 13 20:26 ib_logfile0

drwxr-x---. 2 mysql mysql 4096 Oct 13 20:26 ib_logfile1

drwxr-x---. 2 mysql mysql 4096 Oct 13 20:26 ibdata1

drwxr-x---. 2 mysql mysql 4096 Oct 13 20:26 mysql

drwxr-x---. 2 mysql mysql 4096 Oct 13 20:26 performance_schema

drwxr-x---. 2 mysql mysql 4096 Oct 13 20:26 test

但是,如果需要手动初始化,可以使用以下命令:

mysqld --initialize-insecure

或是

sudo mysqld --initialize --user=mysql

这将初始化数据库,并且不设置初始的 root 密码。如果你希望设置一个初始的 root 密码,可以使用:

mysqld --initialize --console

这将输出初始的随机生成的 root 密码,你可以使用这个临时密码来登录MySQL,可以在初始化后立即修改密码。

启动MySQL服务

启动 MySQL 服务可以通过以下命令完成:

systemctl start mysqld

检查MySQL服务状态

启动服务后,检查服务状态:

systemctl status mysqld

设置MySQL自启动

如果希望 MySQL 数据库在系统启动时自动启动,可以使用以下命令启用服务的自启动:

systemctl enable mysqld

登录MySQL
尝试无密码登录

mysql -u root

如果 MySQL 允许无密码登录,你将进入 MySQL 命令行界面。

如果提示需要密码

确认是否有临时密码(查看日志文件):

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

如果有临时密码,使用临时密码登录:

mysql -u root -p

输入临时密码。

密码输入时不会有显示,最好是复制临时密码,保证密码输入的准确性

修改root用户的密码
切换到MySQL数据库
USE mysql;
修改密码
ALTER USER 'root'@'localhost' IDENTIFIED BY 'Admin12345!';
刷新权限

确保更改生效

FLUSH PRIVILEGES;
重新登录验证

退出MySQL客户端并使用新密码重新登录,以确保密码更改成功

EXIT;
mysql -u root -pAdmin12345!

注:如何设置弱密码

在MySQL中设置弱密码(如 123456)虽然不推荐,但在某些开发或测试环境中可能有其必要性。以下是详细步骤来设置MySQL的root用户密码为 123456。

我们在设置过符合密码策略的密码的基础上,将密码更改为123456

首先照常登录mysql

mysql -u root -pAdmin12345!

切换到MySQL数据库

USE mysql;

关闭密码策略插件

UNINSTALL PLUGIN validate_password;

如若出现以上这种报错

可能的出现的原因是因为MySQL的validate_password插件尚未启用。

我们可以先检查 validate_password 插件是否启用

可以通过以下命令来查看已安装的插件

SHOW PLUGINS;
mysql> SHOW PLUGINS;
+----------------------------+----------+--------------------+---------+---------+
| Name                       | Status   | Type               | Library | License |
+----------------------------+----------+--------------------+---------+---------+
| binlog                     | ACTIVE   | STORAGE ENGINE     | NULL    | GPL     |
| mysql_native_password      | ACTIVE   | AUTHENTICATION     | NULL    | GPL     |
| sha256_password            | ACTIVE   | AUTHENTICATION     | NULL    | GPL     |
| CSV                        | ACTIVE   | STORAGE ENGINE     | NULL    | GPL     |
| MEMORY                     | ACTIVE   | STORAGE ENGINE     | NULL    | GPL     |
| InnoDB                     | ACTIVE   | STORAGE ENGINE     | NULL    | GPL     |
| INNODB_TRX                 | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |
| INNODB_LOCKS               | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |
| INNODB_LOCK_WAITS          | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |
| INNODB_CMP                 | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |
| INNODB_CMP_RESET           | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |
| INNODB_CMPMEM              | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |
| INNODB_CMPMEM_RESET        | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |
| INNODB_CMP_PER_INDEX       | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |
| INNODB_CMP_PER_INDEX_RESET | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |
| INNODB_BUFFER_PAGE         | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |
| INNODB_BUFFER_PAGE_LRU     | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |
| INNODB_BUFFER_POOL_STATS   | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |
| INNODB_TEMP_TABLE_INFO     | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |
| INNODB_METRICS             | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |
| INNODB_FT_DEFAULT_STOPWORD | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |
| INNODB_FT_DELETED          | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |
| INNODB_FT_BEING_DELETED    | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |
| INNODB_FT_CONFIG           | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |
| INNODB_FT_INDEX_CACHE      | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |
| INNODB_FT_INDEX_TABLE      | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |
| INNODB_SYS_TABLES          | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |
| INNODB_SYS_TABLESTATS      | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |
| INNODB_SYS_INDEXES         | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |
| INNODB_SYS_COLUMNS         | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |
| INNODB_SYS_FIELDS          | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |
| INNODB_SYS_FOREIGN         | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |
| INNODB_SYS_FOREIGN_COLS    | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |
| INNODB_SYS_TABLESPACES     | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |
| INNODB_SYS_DATAFILES       | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |
| INNODB_SYS_VIRTUAL         | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |
| MyISAM                     | ACTIVE   | STORAGE ENGINE     | NULL    | GPL     |
| MRG_MYISAM                 | ACTIVE   | STORAGE ENGINE     | NULL    | GPL     |
| PERFORMANCE_SCHEMA         | ACTIVE   | STORAGE ENGINE     | NULL    | GPL     |
| ARCHIVE                    | ACTIVE   | STORAGE ENGINE     | NULL    | GPL     |
| BLACKHOLE                  | ACTIVE   | STORAGE ENGINE     | NULL    | GPL     |
| FEDERATED                  | DISABLED | STORAGE ENGINE     | NULL    | GPL     |
| partition                  | ACTIVE   | STORAGE ENGINE     | NULL    | GPL     |
| ngram                      | ACTIVE   | FTPARSER           | NULL    | GPL     |
+----------------------------+----------+--------------------+---------+---------+
44 rows in set (0.01 sec)

可以看到validate_password插件并未启用、未被列出,我们需要加载该插件

INSTALL PLUGIN validate_password SONAME 'validate_password.so';

加载成功

接着再给他禁用掉

重置密码

在MySQL提示符下,使用 ALTER USER 命令来重置密码,我这里将设置为123456。

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

刷新权限

确保更改生效。

FLUSH PRIVILEGES;

重新登录验证

退出MySQL客户端并使用新密码重新登录,以确保密码更改成功:

EXIT;
mysql -u root -p123456

更改成功。

如果没有安装密码策略这个插件,我们也可以选择另一种方式来设置弱密码。

还是一样先使用临时密码登录mysql

更改MySQL密码策略

set global validate_password_policy=0;
set global validate_password_length=4;

设置简单的弱密码123456

set password=password("123456");

刷新权限以确保修改内容生效

flush privileges;
MySQL实现远程登录
登录MySQL

首先,使用现有的root用户或其他具有足够权限的用户登录MySQL:

mysql -u root -p123456
切换到MySQL数据库

进入MySQL数据库:

USE mysql;
修改user表中的host项

我这里将host项里的localhost改成%

update user set host = '%' where user = 'root';
刷新权限

确保更改生效

FLUSH PRIVILEGES;
验证更改

可以通过查询user表来验证更改是否成功

SELECT user, host FROM user WHERE user = 'root';

连接测试

成功!

### 解析 Import Error 的常见原因 当遇到 `ImportError: cannot import name 'Generic'` 错误时,通常意味着尝试从模块中导入的对象不存在或无法访问。此问题可能由多种因素引起: - 版本不兼容:不同库之间的版本冲突可能导致此类错误。 - 安装缺失:目标库未正确安装或路径配置有误。 - 导入语句不当:可能存在循环依赖或其他语法层面的问题。 ### 针对 Generic 类型的具体解决方案 对于特定于 `Generic` 的情况,考虑到 Python 中 `Generic` 是 typing 模块的一部分,在处理该类别的 ImportError 时可采取如下措施[^1]: #### 方法一:确认typing模块可用性 确保环境中已安装标准库中的 typing 模块,并且其版本支持所使用的特性。可以通过以下命令验证: ```bash python -c "from typing import Generic; print(Generic)" ``` 如果上述命令执行失败,则可能是由于 Python 或者相关扩展包的版本过低造成的。此时应考虑升级至更高版本的解释器以及对应的开发工具链。 #### 方法二:调整导入方式 有时直接通过顶层命名空间来获取所需组件会更稳定可靠。修改代码以采用这种做法可能会解决问题: ```python from collections.abc import Iterable # 如果是迭代器相关接口 from typing import TypeVar, Protocol # 对于协议和泛型定义 T = TypeVar('T') class MyContainer(Protocol[T]): ... ``` 注意这里并没有显式提到 `Generic` ,而是利用了更为基础的数据结构抽象基类或是其他替代方案实现相同功能[^2]。 #### 方法三:排查环境变量设置 检查系统的 PYTHONPATH 和虚拟环境配置是否正常工作。任何异常都可能导致某些第三方软件包找不到必要的资源文件而引发类似的错误提示。建议清理并重建项目专属的工作区以便排除干扰项的影响。 #### 示例修正后的代码片段 假设原始代码试图这样引入 `Generic` : ```python from some_module import Generic # 可能导致 ImportError ``` 改为遵循官方文档推荐的方式后变为: ```python from typing import Generic # 正确的做法 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值