第一部分:基础知识 1. 介绍 --[MySQL轻松入门教程]

什么是MySQL?

MySQL 是一种广泛使用的关系型数据库管理系统(RDBMS),它使用结构化查询语言(SQL)来管理数据。MySQL 由瑞典公司 MySQL AB 开发,现在归 Oracle Corporation 所有。MySQL 是开源软件,这意味着任何人都可以免费下载、修改和分发它。它的设计目标是速度、可靠性和易用性,同时保持较低的总体拥有成本。

主要特点

1.开源:

MySQL 是开源的,遵循 GNU General Public License (GPL) 协议,这使得它在开发者社区中非常受欢迎。

2.跨平台:

MySQL 支持多种操作系统,包括 Linux、Windows、macOS 等。

3.高性能:

MySQL 以其高性能著称,尤其是在读取密集型应用中表现优异。通过优化索引、缓存和其他技术,MySQL 能够处理大量并发连接和请求。

4.可扩展性:

MySQL 支持多种存储引擎,如 InnoDB、MyISAM 等,每种引擎都有其特定的优点。InnoDB 提供事务支持和行级锁定,而 MyISAM 则更侧重于高速读取操作。

5.安全性:

MySQL 提供了强大的安全功能,包括用户权限管理、加密连接等,以保护数据免受未经授权的访问。

6.易于使用:

MySQL 的 SQL 语法简单易学,文档丰富,有大量的社区支持和教程资源。

7.复制与集群:

MySQL 支持主从复制和多主复制,以及高可用性的集群解决方案,如 MySQL Cluster 和 Galera Cluster,这些特性有助于提高系统的可用性和容错能力。

8.存储过程和触发器:

MySQL 支持存储过程和触发器,允许开发人员将复杂的业务逻辑封装在数据库层。

9.JSON 支持:

从 MySQL 5.7 版本开始,增加了对 JSON 数据类型的支持,使得存储和查询 JSON 文档变得更加方便。

MySQL的历史与版本

MySQL 是一个非常流行的关系型数据库管理系统(RDBMS),其历史可以追溯到 1995 年。以下是 MySQL 的主要历史事件和版本演进的概述:

历史

  • 1995年:MySQL 项目由瑞典公司 MySQL AB 的创始人 Michael Widenius 和 David Axmark 启动。最初,MySQL 是作为 mSQL 数据库的一个替代品开发的。
  • 1996年:第一个版本 MySQL 3.23 发布,这是 MySQL 的第一个公开版本。
  • 1998年:MySQL 3.22 版本发布,引入了事务处理功能。
  • 2000年:MySQL 3.23 版本发布,增加了全文搜索功能。
  • 2002年:MySQL 4.0 版本发布,引入了子查询、存储过程和视图等重要特性。
  • 2005年:MySQL 5.0 版本发布,引入了游标、存储函数、触发器和分区表等功能。
  • 2008年:Sun Microsystems 收购了 MySQL AB。
  • 2010年:Oracle Corporation 收购了 Sun Microsystems,从而获得了 MySQL 的所有权。
  • 2011年:MySQL 5.5 版本发布,增强了性能和可扩展性。
  • 2013年:MySQL 5.6 版本发布,引入了全局事务标识符 (GTID) 和增强的复制功能。
  • 2015年:MySQL 5.7 版本发布,引入了 JSON 数据类型支持和改进的性能。
  • 2018年:MySQL 8.0 版本发布,这是一个重大的版本更新,引入了许多新特性和改进,包括窗口函数、通用表表达式 (CTE)、改进的安全性和性能优化。

主要版本

MySQL 3.x 系列
  • 3.23 (1998): 引入了事务处理功能。
  • 3.23.54 (2004): 这是 MySQL 3.x 系列的最后一个稳定版本。
MySQL 4.x 系列
  • 4.0 (2002): 引入了子查询、存储过程和视图等重要特性。
  • 4.1 (2004): 引入了 Unicode 支持和预处理语句。
MySQL 5.x 系列
  • 5.0 (2005): 引入了游标、存储函数、触发器和分区表等功能。
  • 5.1 (2008): 引入了事件调度器、分区管理和性能优化。
  • 5.5 (2011): 增强了性能和可扩展性,引入了半同步复制。
  • 5.6 (2013): 引入了全局事务标识符 (GTID) 和增强的复制功能。
  • 5.7 (2015): 引入了 JSON 数据类型支持和改进的性能。
MySQL 8.x 系列
  • 8.0 (2018): 这是一个重大的版本更新,引入了许多新特性和改进,包括:
    • 窗口函数:允许在查询中进行复杂的分析操作。
    • 通用表表达式 (CTE):使查询更加简洁和易于理解。
    • JSON 增强:提供了更多的 JSON 函数和更好的性能。
    • 安全性改进:增强了密码管理、角色管理和加密功能。
    • 性能优化:改进了查询优化器、索引管理和内存管理。

当前版本

截至2024年,MySQL 的最新稳定版本是 8.0.x 系列。MySQL 8.0 包含了大量的新特性和改进,使其成为更加强大和灵活的数据库管理系统。此外,MySQL 社区版和企业版都在持续更新,以提供最新的功能和安全补丁。

安装MySQL

安装 MySQL 可以通过多种方式进行,具体取决于你使用的操作系统。以下是一些常见操作系统的安装步骤。

在 Debian/Ubuntu 上安装 MySQL

  1. 更新包列表:

    sudo apt update
    
  2. 安装 MySQL 服务器:

    sudo apt install mysql-server
    
  3. 启动 MySQL 服务:

    sudo systemctl start mysql
    
  4. 设置开机自启:

    sudo systemctl enable mysql
    
  5. 运行安全脚本(可选但推荐):

    sudo mysql_secure_installation
    

    这个脚本会引导你设置 root 密码、移除匿名用户、禁止远程 root 登录等安全措施。

  6. 验证安装:

    sudo mysql -u root -p
    

    输入你在 mysql_secure_installation 中设置的密码,进入 MySQL 命令行界面。

在 CentOS/RHEL 上安装 MySQL

  1. 添加 MySQL 仓库:

    sudo yum install https://repo.mysql.com/mysql80-community-release-el7-3.noarch.rpm
    
  2. 安装 MySQL 服务器:

    sudo yum install mysql-server
    
  3. 启动 MySQL 服务:

    sudo systemctl start mysqld
    
  4. 设置开机自启:

    sudo systemctl enable mysqld
    
  5. 获取临时密码(MySQL 8.0+):
    安装过程中,MySQL 会生成一个临时密码。你可以通过以下命令找到它:

    sudo grep 'temporary password' /var/log/mysqld.log
    
  6. 运行安全脚本(可选但推荐):

    sudo mysql_secure_installation
    

    这个脚本会引导你设置 root 密码、移除匿名用户、禁止远程 root 登录等安全措施。

  7. 验证安装:

    sudo mysql -u root -p
    

    输入你在 mysql_secure_installation 中设置的密码,进入 MySQL 命令行界面。

在 macOS 上安装 MySQL

  1. 使用 Homebrew 安装 MySQL:
    如果你还没有安装 Homebrew,可以先安装 Homebrew:

    /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
    
  2. 安装 MySQL:

    brew install mysql
    
  3. 启动 MySQL 服务:

    brew services start mysql
    
  4. 设置 root 密码:

    mysql_secure_installation
    

    这个脚本会引导你设置 root 密码、移除匿名用户、禁止远程 root 登录等安全措施。

  5. 验证安装:

    mysql -u root -p
    

    输入你在 mysql_secure_installation 中设置的密码,进入 MySQL 命令行界面。

在 Windows 上安装 MySQL

  1. 下载 MySQL 安装程序:
    访问 MySQL 官方网站,下载适合你操作系统的 MySQL 安装程序(通常是 .msi 文件)。

  2. 运行安装程序:
    双击下载的 .msi 文件,启动安装向导。

  3. 选择安装类型:
    选择“Developer Default”或“Server Only”安装类型,根据你的需求进行选择。

  4. 配置 MySQL 服务:
    在安装过程中,你会被要求设置 root 用户的密码。请记住这个密码,以后登录 MySQL 时会用到。

  5. 完成安装:
    按照向导的提示完成安装过程。

  6. 验证安装:
    打开命令提示符(CMD),输入以下命令:

    mysql -u root -p
    

    输入你在安装过程中设置的 root 密码,进入 MySQL 命令行界面。

验证安装

无论你使用哪种操作系统,都可以通过以下命令来验证 MySQL 是否安装成功并正常运行:

mysql -u root -p

输入 root 用户的密码后,如果成功进入 MySQL 命令行界面,说明安装成功。

其他注意事项

  • 防火墙设置:如果你需要从远程访问 MySQL 服务器,确保防火墙允许 MySQL 端口(默认是 3306)。
  • 配置文件:MySQL 的主要配置文件通常位于 /etc/mysql/my.cnf(Debian/Ubuntu)或 /etc/my.cnf(CentOS/RHEL)。你可以根据需要编辑这些文件来调整 MySQL 的配置。

配置环境

配置 MySQL 环境通常涉及以下几个步骤:安装 MySQL 服务器、配置 MySQL 服务、设置环境变量(可选)、以及可能的其他安全和性能优化设置。下面是详细的步骤指南,适用于常见的操作系统如 Linux 和 Windows。

在 Linux 上配置 MySQL

1. 安装 MySQL 服务器

在大多数基于 Debian 的系统(如 Ubuntu)上,可以使用以下命令来安装 MySQL 服务器:

sudo apt update
sudo apt install mysql-server

对于基于 Red Hat 的系统(如 CentOS),可以使用:

sudo yum install mysql-server

或者使用 dnf(较新的版本):

sudo dnf install mysql-server
2. 启动 MySQL 服务

安装完成后,启动 MySQL 服务并设置开机自启:

sudo systemctl start mysql
sudo systemctl enable mysql
3. 配置 MySQL

运行 MySQL 安全脚本来设置 root 密码和其他安全选项:

sudo mysql_secure_installation

根据提示进行操作,包括设置 root 密码、移除匿名用户等。

4. 登录 MySQL

使用以下命令登录到 MySQL 服务器:

mysql -u root -p

输入之前设置的密码。

5. 配置文件

MySQL 的主配置文件通常是 /etc/mysql/my.cnf 或 /etc/my.cnf。你可以编辑这个文件来调整各种参数,例如端口号、字符集、日志等。

6. 其他配置
  • 防火墙设置:确保防火墙允许 MySQL 端口(默认是 3306)。
  • 远程访问:如果需要从外部访问 MySQL 服务器,需要修改 MySQL 配置文件中的绑定地址,并更新防火墙规则。

在 Windows 上配置 MySQL

1. 下载 MySQL 安装程序

从 MySQL 官方网站 下载适合你系统的安装程序。

2. 运行安装程序

双击下载的安装程序,选择“Developer Default”或“Server Only”安装类型,然后按照向导完成安装。

3. 配置 MySQL

安装过程中会提示你设置 root 用户的密码。确保设置一个强密码。

4. 启动 MySQL 服务

安装完成后,MySQL 服务会自动启动。你可以在服务管理器中查看和控制 MySQL 服务的状态。

5. 登录 MySQL

打开命令提示符,使用以下命令登录到 MySQL 服务器:

mysql -u root -p

输入之前设置的密码。

6. 配置文件

MySQL 的配置文件通常位于 C:\ProgramData\MySQL\MySQL Server X.X\my.ini。你可以编辑这个文件来调整各种参数,例如端口号、字符集、日志等。

7. 其他配置
  • 防火墙设置:确保防火墙允许 MySQL 端口(默认是 3306)。
  • 远程访问:如果需要从外部访问 MySQL 服务器,需要修改 MySQL 配置文件中的绑定地址,并更新防火墙规则。

设置环境变量(可选)

如果你希望在命令行中直接使用 mysql 命令而不需要指定完整路径,可以将 MySQL 的 bin 目录添加到系统的 PATH 环境变量中。

在 Linux 上

编辑 ~/.bashrc 或 /etc/profile 文件,添加以下内容:

export PATH=$PATH:/usr/local/mysql/bin

然后运行 source ~/.bashrc 或 source /etc/profile 使更改生效。

在 Windows 上
  • 打开“系统属性” -> “高级系统设置” -> “环境变量”。
  • 在“系统变量”部分找到 Path 变量,点击“编辑”。
  • 添加 MySQL 的 bin 目录路径,例如 C:\Program Files\MySQL\MySQL Server X.X\bin。
  • 点击“确定”保存更改。

通过以上步骤,你应该能够成功配置并运行 MySQL 服务器。如果有任何具体问题或需要进一步的帮助,请告诉我!

使用命令行工具

MySQL 命令行工具(也称为 MySQL 客户端)是一个非常强大的工具,用于与 MySQL 服务器进行交互。通过命令行工具,你可以执行各种 SQL 查询、管理数据库和用户、查看服务器状态等。下面是一些常用的 MySQL 命令行工具的使用方法和示例。

启动 MySQL 命令行工具

在终端或命令提示符中,使用以下命令启动 MySQL 命令行工具:

mysql -u your_username -p

其中 your_username 是你的 MySQL 用户名。执行上述命令后,系统会提示你输入密码。输入正确的密码后,你将进入 MySQL 命令行界面。

基本命令

1. 显示所有数据库
SHOW DATABASES;
2. 创建数据库
CREATE DATABASE new_database;
3. 选择数据库
USE new_database;
4. 显示当前数据库中的所有表
SHOW TABLES;
5. 创建表
CREATE TABLE employees (id INT AUTO_INCREMENT PRIMARY KEY,first_name VARCHAR(50),last_name VARCHAR(50),email VARCHAR(100)
);
6. 插入数据
INSERT INTO employees (first_name, last_name, email) VALUES ('John', 'Doe', 'john.doe@example.com');
7. 查询数据
SELECT * FROM employees;
8. 更新数据
UPDATE employees SET email = 'johndoe@example.com' WHERE id = 1;
9. 删除数据
DELETE FROM employees WHERE id = 1;
10. 删除表
DROP TABLE employees;
11. 删除数据库
DROP DATABASE new_database;

管理用户

1. 创建新用户
CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password';
2. 授予权限
GRANT ALL PRIVILEGES ON new_database.* TO 'newuser'@'localhost';
3. 查看用户权限
SHOW GRANTS FOR 'newuser'@'localhost';
4. 撤销权限
REVOKE ALL PRIVILEGES ON new_database.* FROM 'newuser'@'localhost';
5. 删除用户
DROP USER 'newuser'@'localhost';

其他常用命令

1. 查看当前使用的数据库
SELECT DATABASE();
2. 查看当前用户
SELECT USER();
3. 查看 MySQL 版本
SELECT VERSION();
4. 查看服务器状态
SHOW STATUS;
5. 查看服务器变量
SHOW VARIABLES;
6. 退出 MySQL 命令行工具
EXIT;

或者

QUIT;

示例

假设我们有一个名为 company 的数据库,并且在这个数据库中有一个名为 employees 的表。我们可以执行以下操作:

  1. 创建数据库:

    CREATE DATABASE company;
    
  2. 选择数据库:

    USE company;
    
  3. 创建表:

    CREATE TABLE employees (id INT AUTO_INCREMENT PRIMARY KEY,first_name VARCHAR(50),last_name VARCHAR(50),email VARCHAR(100)
    );
    
  4. 插入数据:

    INSERT INTO employees (first_name, last_name, email) VALUES ('Alice', 'Smith', 'alice.smith@example.com');
    INSERT INTO employees (first_name, last_name, email) VALUES ('Bob', 'Johnson', 'bob.johnson@example.com');
    
  5. 查询数据:

    SELECT * FROM employees;
    
  6. 更新数据:

    UPDATE employees SET email = 'alice.smith@newexample.com' WHERE id = 1;
    
  7. 删除数据:

    DELETE FROM employees WHERE id = 2;
    
  8. 删除表:

    DROP TABLE employees;
    
  9. 删除数据库:

    DROP DATABASE company;
    

通过这些基本命令,你可以有效地管理和操作 MySQL 数据库。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.tpcf.cn/diannao/62640.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Flink双流Join

在离线 Hive 中,我们经常会使用 Join 进行多表关联。那么在实时中我们应该如何实现两条流的 Join 呢?Flink DataStream API 为我们提供了3个算子来实现双流 join,分别是: join coGroup intervalJoin 下面我们分别详细看一下这…

C# 匿名类型和匿名方法

在C#中,匿名类型和匿名方法是两个非常有用的特性,它们可以帮助我们更方便地处理数据和简化代码的编写。 一、匿名类型 (Anonymous Types) 匿名类型允许你在不显式定义类的情况下创建对象。编译器会自动为你生成一个类,其属性由你在对象初始…

【真正离线安装】Adobe Flash Player 32.0.0.156 插件离线安装包下载(无需联网安装)

网上很多人声称并提供的flash离线安装包是需要联网才能安装成功的,其实就是在线安装包,而这里提供的是真正的离线安装包,无需联网即可安装成功。 点击下面地址下载离线安装包: Adobe Flash Player 32.0.0.156 for IE Adobe Fla…

《Vue 组件化开发:构建可复用的模块》

一、Vue 组件化开发概述 组件化是 Vue.js 的核心概念之一,它允许将界面拆分成独立、可复用的组件,使得开发大型应用变得更加简单和高效。 组件的定义是实现应用中局部功能代码和资源的集合。Vue.js 的组件化用于将 UI 页面分割为若干组件进行组合和嵌套…

Python生日祝福烟花

1. 实现效果 2. 素材加载 2个图片和3个音频 shoot_image pygame.image.load(shoot(已去底).jpg) # 加载拼接的发射图像 flower_image pygame.image.load(flower.jpg) # 加载拼接的烟花图 烟花不好去底 # 调整图像的像素为原图的1/2 因为图像相对于界面来说有些大 shoo…

26页PDF | 数据中台能力框架及评估体系解读(限免下载)

一、前言 这份报告详细解读了数据中台的发展历程、核心概念、能力框架及成熟度评估体系。它从阿里巴巴的“大中台,小前台”战略出发,探讨了数据中台如何通过整合企业内部的数据资源和能力,加速业务迭代、降低成本,并推动业务增长…

C++中输入 不定长数据的方法

在未知 所需要输入数据的长度时 ,可以用whilegetchar的方法。 char arr1[60] ;int i 0;char c ;while ((c getchar())! \n && c! EOF){arr1[i] c;i;}arr1[i]\0; 这里正常输入字符都是没问题的,while里面的内容都可以正常执行, 当…

Linux系统硬件老化测试脚本:自动化负载与监控

简介: 这篇文章介绍了一款用于Linux系统的自动化硬件老化测试脚本。该脚本能够通过对CPU、内存、硬盘和GPU进行高强度负载测试,持续运行设定的时长(如1小时),以模拟长时间高负荷运行的环境,从而验证硬件的稳…

如何分段存储Redis键值对

说明:本文介绍针对一个value过长的键值对,如何分段存储; 场景 当我们需要存入一个String类型的键值对到Redis中,如下: (缓存接口) public interface CacheService {/*** 添加一个字符串键值…

C-操作符

操作符种类 在C语言中,操作符有以下几种: 算术操作符 移位操作符 位操作符 逻辑操作符 条件操作符 逗号表达式 下标引用,函数调用 拓展:整型提升 我们介绍常用的几个 算术操作符 (加)&#xff…

RabbitMQ 客户端 连接、发送、接收处理消息

RabbitMQ 客户端 连接、发送、接收处理消息 一. RabbitMQ 的机制跟 Tcp、Udp、Http 这种还不太一样 RabbitMQ 服务,不是像其他服务器一样,负责逻辑处理,然后转发给客户端 而是所有客户端想要向 RabbitMQ服务发送消息, 第一步&a…

浅析大数据时代下的网络安全

一、大数据时代下网络安全的现状 在全球化进程不断深入发展的情况下,互联网行业发展速度也更加迅猛,人们对网络信息的需求量不断增加,所以目前已经进入了大数据时代。 随着计算机技术的不断发展,我国互联网网络规模、网民数量、…

【SQL常用日期函数(二)】

SQL 常用日期函数-基于 Impala 3.4.0 接之前 SQL常用日期函数(一)介绍了实现计算上年末、上级末、上月末、上年同期的方法和函数,这次继续分享常用的SQL日期函数及使用场景。包括:DAYOFWEEK 函数、TRUNC 函数、LAST_DAY 函数。 …

计算机基础 原码反码补码问题

整数的二进制的表示形式:其实有三种 原码:直接根据数值写出的二进制序列就是原码 反码:原码的符号位不变,其他位按位取反就是反码 补码:反码1,就是补码 负数:-1 以补码形式存放在内存 写出 -1…

题海拾贝——生成元(Digit Generator,ACM/ICPC SEOUL 2005,UVa1583)

Hello大家好&#xff01;很高兴我们又见面啦&#xff01;给生活添点passion&#xff0c;开始今天的编程之路&#xff01; 我的博客&#xff1a;<但凡. 欢迎点赞关注&#xff01; 1、题目描述 如果x加上x的各个数字之和得到y&#xff0c;就说x是y的生成元。给出(1<n<10…

笑话故事 第十七期

好久不见&#xff0c;以下是为您准备的笑话&#xff0c;希望能让您捧腹大笑&#xff1a; 1. 名字的误会 小明新交了一个女朋友&#xff0c;带回家给父母看。 妈妈问&#xff1a;“姑娘&#xff0c;你叫什么名字啊&#xff1f;” 女朋友&#xff1a;“阿姨&#xff0c;我叫小芳…

Clean Docker Images and Container by Cron Job

1.Cretae a clean_docker_containers.sh to clean containers (status: exited, dead) #!/bin/bash# 找到所有状态不正常的容器 containers$(docker ps -a --filter "statusexited" --filter "statusdead" --format "{{.ID}}")if [ -z "$…

欧科云链研究院:比特币还能“燃”多久?

出品&#xff5c; OKG Research 作者&#xff5c;Hedy Bi 本周二&#xff0c;隔夜“特朗普交易” 的逆转趋势波及到比特币市场。比特币价格一度冲高至约99,000美元后迅速回落至93,000美元以下&#xff0c;最大跌幅超6%。这是由于有关以色列和黎巴嫩有望达成停火协议的传闻引发…

Linux系统管理基础指南--习题

目录 一、基础知识与命令 二、 Linux的用户接口 三、文件权限与目录管理 四、shell相关知识 五、软件安装与网络 六、网络进程管理 一、基础知识与命令 1. (操作题)分别执行下述命令 ls -al cd ~ cd man -f man man –k cd man --help cal --help date --help bc --he…

hint: Updates were rejected because the tip of your current branch is behind!

问题 本地仓库往远段仓库推代码时候提示&#xff1a; error: failed to push some refs to 192.168.2.1:java-base/java-cloud.git hint: Updates were rejected because the tip of your current branch is behind! refs/heads/master:refs/heads/master [rejected] (…