第一部分:基础知识 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 ~/.bashrcsource /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.mzph.cn/diannao/62640.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈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] (…