Ubuntu安装和简单操作MySQL工具

一、MySQL数据库的起源

        MySQL 是一个开源的关系型数据库管理系统(RDBMS),其起源可以追溯到 1994 年。MySQL 最初是由瑞典公司 MySQL AB 开发的,该公司由 Michael “Monty” Widenius、Allan Larsson 和 David Axmark 于 1995 年成立。MySQL 的名字来源于 Monty 的女儿 My 的名字,加上 “SQL” 代表 “Structured Query Language”(结构化查询语言)。

MySQL 的开发最初是为了提供一种高效、可靠的数据库解决方案,并且具有较好的性能和简单的管理特性。其第一个公开发布的版本是 1.0,于 1995 年发布。随着时间的推移,MySQL 逐渐发展成为一个非常流行的数据库管理系统,广泛应用于各种类型的应用程序和网站。

        2008 年,Sun Microsystems 收购了 MySQL AB,MySQL 成为了 Sun 的一部分。之后,Oracle 公司于 2010 年收购了 Sun Microsystems,因此 MySQL 也成为了 Oracle 的一部分。尽管如此,MySQL 依然以开源的方式继续发展,拥有大量的用户和开发者社区支持。

        如今,尽管MySQL被甲骨文收购,但是MySQL依然迭代到了8.0.37版本,简称8.4,如果深入了解MySQL的发展历程,我们不难发现MySQL从一个小型的开源数据库项目成长为一个功能强大、被广泛使用的企业级数据库系统,得益于其持续的创新与发展,也是MySQL在今天的数据库市场占据极其重要的地位主要原因。

MySQL的官网访问

mysql官网:

     MySQL :: MySQL 8.4 Reference Manual :: 2.5.2 Installing MySQL on Linux Using the MySQL APT Repository

oracle官网:

MySQL Enterprise Edition Downloads | Oracle

介绍MySQL

        无论是什么程序,如果涉及到信息存储,比如耗材记录,电话信息,聊天记录,多媒体视频,电子书等数据不仅需要硬盘等这些硬件存储介质,也需要一个后台工具来管理这些数据,尤其像某宝、某东、某多多,英雄联盟、王者荣耀、逆水寒等这类大型软件都需要一个强大的数据库工具来精准高效的维护这些具有隐私性、高价值的信息,而MySQL是为数不多的免费开源的关系型数据库管理系统工具,通过SQL语言操作MySQL工具来管理数据库的日志、权限、数据备份、数据恢复、集群管理等作业。在人力不足的情况下,借助MySQL可以完成大量人工才能完成的海量工作。MySQL工具是开源的,因此在官网上我们依然获取到MySQL的源码,通过源码我们可以自定义自己的数据库工具风格和开发自己的数据库特有的功能,尽管难度很高,因为现有的数据库工具很完善,也许你想要的都有。

古希腊著名数学家和物理学家阿基米德曾说:“给我一个支点,我可以撬动整个地球”

二、安装MySQL

1. 更新软件包列表

ps:为防止权限问题,加sudo提权,也可不加

首先,确保你的软件包列表是最新的:

sudo apt update

2. 安装 MySQL

使用apt命令安装 MySQL 服务器:

sudo apt install mysql-server

3. 启动和检查 MySQL 服务

安装完成后,MySQL 服务会自动启动。你可以使用以下命令检查 MySQL 服务的状态:

sudo systemctl status mysql

如果服务没有运行,可以用以下命令启动它:

sudo systemctl start mysql

4. 运行 MySQL 安全设置

为了提高 MySQL 的安全性,你可以运行 MySQL 的安全配置脚本:

sudo mysql_secure_installation

这个脚本会询问你一些问题,例如是否设置 root 密码、是否删除匿名用户、是否禁用 root 远程登录等。按照提示进行设置。

5. 登录到 MySQL

使用以下命令登录到 MySQL:(未设置密码,默认无密码登录)

sudo mysql -u root -p
# -u root 指定root用户登录, 注意这里的root非Ubuntu的超级用户root,而是MySQL默认创建的用户
# -p [密码] 未设置密码,则默认无密码按Enter键进入MySQL
# 小提示:如果忘记了密码,/var/log/mysql/error.log记录了是否创建了密码,及其创建的密码
# 方法:grep password /var/log/mysql/error.log

系统会提示你输入 MySQL的"root" 密码,输入密码后你将进入 MySQL 命令行界面。

注意:默认设置密码策略是<=8个字节

6. 基本操作

在 MySQL 命令行中,你可以执行基本的数据库操作。例如,查看现有的数据库:

show databases;# 示例:
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.00 sec)

创建一个新数据库:

create database mydatabase;# 示例
mysql> create database mydatabase;
Query OK, 1 row affected (0.00 sec)#使用show database;查看创建成功的数据库
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mydatabase         | <---数据库创建成功
| mysql              |
| performance_schema |
| sys                |
+--------------------+
5 rows in set (0.00 sec)

创建一个新用户并授权:

CREATE USER 'myuser'@'127.0.0.1' IDENTIFIED BY 'mypassword';
GRANT ALL PRIVILEGES ON mydatabase.* TO 'myuser'@'localhost';
FLUSH PRIVILEGES;# 示例
# 1、创建用户myuser,设置只有本地主机可访问myuser用户,设置密码为mypasswordCREATE USER 'myuser'@'127.0.0.1' IDENTIFIED BY 'mypassword';
Query OK, 0 rows affected (0.01 sec)# 2、赋予mydatabase数据库的所有权限给myuser用户GRANT ALL PRIVILEGES ON mydatabase.* TO 'myuser'@'localhost';
Query OK, 0 rows affected (0.01 sec)# 3、刷新权限表,让权限生效FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

查看用户:

SELECT User,Host FROM mysql.user;# 示例
mysql> SELECT User,Host FROM mysql.user;
+------------------+-----------+
| User             | Host      |
+------------------+-----------+
| debian-sys-maint | localhost |
| mysql.infoschema | localhost |
| mysql.session    | localhost |
| mysql.sys        | localhost |
| myuser           | 127.0.0.1 | <---创建成功的用户
| root             | localhost |
+------------------+-----------+
6 rows in set (0.00 sec)

退出MySQL:\q

mysql> \q

7. 配置远程访问(可选)

如果你需要从远程主机访问 MySQL,即非本地计算机远程访问数据库,你可能需要修改 MySQL 配置文件/etc/mysql/mysql.conf.d,将bind-address的IP地址由127.0.0.1(默认本地访问)改为0.0.0.0(都可访问)或者你指定的服务器 IP 地址。

然后重新启动 MySQL 服务使配置生效:

sudo systemctl restart mysql

注意:还要在防火墙中开放 MySQL 的端口(默认是 3306),以允许远程访问。

三、MySQL密码策略

1. 登录到 MySQL

首先,以 root 用户或具有适当权限的用户登录到 MySQL:

sudo mysql -u root -p

2. 查看当前密码策略

在 MySQL 命令行中,执行以下命令以查看当前的密码策略设置:

SHOW VARIABLES LIKE 'validate_password%';# 示例
mysql> SHOW VARIABLES LIKE 'validate_password%';
+-------------------------------------------------+--------+
| Variable_name                                   | Value  |
+-------------------------------------------------+--------+
| validate_password.changed_characters_percentage | 0      |
| validate_password.check_user_name               | ON     |
| validate_password.dictionary_file               |        |
| validate_password.length                        | 8      |
| validate_password.mixed_case_count              | 1      |
| validate_password.number_count                  | 1      |
| validate_password.policy                        | MEDIUM |
| validate_password.special_char_count            | 1      |
+-------------------------------------------------+--------+
8 rows in set (0.01 sec)

这将显示所有validate_password相关的设置,包括密码长度、复杂性要求等。

3. 修改密码策略

你可以通过设置以下变量来调整密码策略:

  • 密码长度要求

    SET GLOBAL validate_password.length = 8;
    

    将数字 8 替换为你想要的最小密码长度。

  • 密码复杂性要求

    SET GLOBAL validate_password.policy = LOW;
    

    validate_password.policy变量有以下几个值:

    • LOW:只要求密码长度。
    • MEDIUM:要求密码包含字母、数字和特殊字符。
    • STRONG:更严格的要求,密码中必须包含大写字母、小写字母、数字和特殊字符。
  • 密码最小数字要求

    SET GLOBAL validate_password.mixed_case_count = 1;
    

    设置密码中最少需要包含的大小写字母数量。

  • 密码最小特殊字符要求

    SET GLOBAL validate_password.special_char_count = 1;
    

    设置密码中最少需要包含的特殊字符数量。

4. 永久保存设置

需要注意的是上面的设置在 MySQL 重新启动后会丢失。如果你希望这些更改在每次 MySQL 启动时都生效,需要修改 MySQL 配置文件:

编辑 MySQL 配置文件/etc/mysql/mysql.conf.d/mysqld.cnf(具体位置取决于你的 MySQL 安装):

sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf# 使用vim编译工具打开配置文件mysqld.cnf

添加或修改以下行以反映你需要的设置:

[mysqld]
validate_password.length = 8
validate_password.policy = LOW
validate_password.mixed_case_count = 1
validate_password.special_char_count = 1

保存文件并退出编辑器,然后重新启动 MySQL 服务使更改生效:

sudo systemctl restart mysql

5. 测试新的密码策略

尝试设置一个新密码,以确保它符合新的策略要求。例如:

ALTER USER 'youruser'@'localhost' IDENTIFIED BY 'newpassword';

替换'youruser' 和'newpassword'为你的用户名和新密码或其他方法看看修改的策略是否生效。

四、SQL语言

        SQL(Structured Query Language,结构化查询语言)由美国的IBM公司研发,SQL是一种用于与关系型数据库管理系统(RDBMS)进行交互的标准语言。它用于执行各种数据库操作,例如查询数据、插入数据、更新数据和删除数据。SQL 的基本语法和功能包括以下几个方面:

  1. 数据查询(SELECT)

    • 查询数据库中的数据。
    • 示例:
      SELECT column1, column2
      FROM table_name
      WHERE condition;
      
  2. 数据插入(INSERT)

    • 向表中插入新数据。
    • 示例:
      INSERT INTO table_name (column1, column2)
      VALUES (value1, value2);
      
  3. 数据更新(UPDATE)

    • 修改表中现有的数据。
    • 示例:
      UPDATE table_name
      SET column1 = value1, column2 = value2
      WHERE condition;
      
  4. 数据删除(DELETE)

    • 从表中删除数据。
    • 示例:
      DELETE FROM table_name
      WHERE condition;
      
  5. 表和数据库管理

    • 创建表
      CREATE TABLE table_name (column1 datatype,column2 datatype,...
      );
      
    • 删除表
      DROP TABLE table_name;
      
    • 创建数据库
      CREATE DATABASE database_name;
      
    • 删除数据库
      DROP DATABASE database_name;
      
  6. 数据定义语言(DDL)

    • 修改表结构(例如添加或删除列):
      ALTER TABLE table_name
      ADD column_name datatype;
      
  7. 数据控制语言(DCL)

    • 授权权限
      GRANT ALL PRIVILEGES ON database_name.* TO 'username'@'host';
      
    • 撤销权限
      REVOKE ALL PRIVILEGES ON database_name.* FROM 'username'@'host';
      
  8. 数据完整性

    • 添加约束(例如主键、外键):
      ALTER TABLE table_name
      ADD CONSTRAINT constraint_name PRIMARY KEY (column_name);
      
  9. 事务管理

    • 开始事务
      START TRANSACTION;
      
    • 提交事务
      COMMIT;
      
    • 回滚事务
      ROLLBACK;
      
  10. 索引

    • 创建索引
      CREATE INDEX index_name
      ON table_name (column_name);

PS:学会使用MySQL数据库工具,需要先掌握SQL语言,并在实践中运用所学的知识,尤其是想深入和熟练使用MySQL开源工具的开发者和数据库运维人员,我们一起努力。 

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

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

相关文章

ruoyi框架的优缺点

若依框架的优缺点 ‌若依框架的优点包括&#xff1a; 优秀的性能表现&#xff1a;ruoyi框架以其优秀的性能表现&#xff0c;能够高效地处理各种开发任务。 多种组件支持&#xff1a;提供了多种组件的支持&#xff0c;使得开发者能够灵活地选择和使用各种工具和技术。 强大的…

MyBatis-Plus自动生成代码

目录 前言一. 什么是 MyBatis-Plus1. Mybatis-Plus 的特点2. Mybatis-Plus 结构二. MyBatis-Plus 自动生成步骤1. 数据库准备2. 环境准备(1) 创建一个空的 Spring Boot 工程(2) 导入pom依赖(3) 编辑application.yml文件(4) 在启动类加入 @MapperScan 注解3. 配置代码4. 运行三.…

江科大/江协科技 STM32学习笔记P15

文章目录 TIM输出比较1、输出比较简介2、PWM简介3、输出比较通道&#xff08;高级&#xff09;4、输出比较通道&#xff08;通用&#xff09;5、输出比较模式6、PWM基本结构参数计算 7、舵机简介8、直流电机及驱动简介驱动芯片 TIM输出比较 1、输出比较简介 CNT计数器&#x…

用户认证与授权:在 Symfony 中实现安全控制

用户认证与授权&#xff1a;在 Symfony 中实现安全控制 Symfony 是一个功能强大且高度可扩展的 PHP 框架&#xff0c;广泛用于开发复杂的 Web 应用程序。在现代 Web 应用程序中&#xff0c;用户认证和授权是不可或缺的功能&#xff0c;用于确保应用程序的安全性和数据的隐私性…

Java工厂模式详解:方法工厂模式与抽象工厂模式

Java工厂模式详解&#xff1a;方法工厂模式与抽象工厂模式 一、引言 在Java开发中&#xff0c;设计模式是解决常见软件设计问题的一种有效方式。工厂模式作为创建型设计模式的一种&#xff0c;提供了灵活的对象创建机制&#xff0c;有助于降低代码的耦合度&#xff0c;提高系…

VUE3——003、VUE 项目中的文件结构(index.html、main.ts、App.vue)

虽然是号称是小白初学&#xff0c;但本文只是对 VUE 小白&#xff0c;其它的基功还是有一丢丢的&#xff0c;不太懂的同学去看看一下详解&#xff0c;我这里记述的是自己的理解和观点。见谅&#xff01; index.html&#xff1a;入口文件&#xff08;以创建 vue3 项目的默认文件…

ElasticSearch(es)倒排索引

目录 一、ElasticSearch 二、倒排索引 1. 正向索引 2. 倒排索引 具体细节 1. 文档分析 2. 索引构建 3. 索引存储 4. 词条编码 5. 索引优化 6. 查询处理 示例 总结 3. 正向和倒排 三、总结 倒排索引的基本概念 为什么倒排索引快 一、ElasticSearch Elasticsear…

Vue 3 中使用 InMap 绘制热力图

本文由ScriptEcho平台提供技术支持 项目地址&#xff1a;传送门 Vue 3 中使用 InMap 绘制热力图 应用场景介绍 InMap 是一款强大的地图组件库&#xff0c;它提供了一系列丰富的可视化功能&#xff0c;包括热力图。热力图可以将数据点在地图上以颜色编码的方式可视化&#x…

论文阅读_字节的语音生成模型_Seed-TTS

英文名称: Seed-TTS: A Family of High-Quality Versatile Speech Generation Models 中文名称: Seed-TTS&#xff1a;高质量多功能语音生成模型系列 链接: http://arxiv.org/abs/2406.02430v1 代码: https://github.com/BytedanceSpeech/seed-tts-eval (评测工具) 演示网站&am…

找出所有点到一个点的距离的最小值

这个题的看一眼有点像树形dp&#xff0c;但是要怎么去优化我们转移方程呢 这是为什么呢&#xff0c;我们的树形dp很难考虑来之前的答案&#xff0c;那么d[y] 怎么办&#xff0c;我们可以先以1为根计算出以1为根的答案 #define _CRT_SECURE_NO_WARNINGS #include<bits/stdc.…

js 计算小数精度问题 ,引入decimal.js库 解决

安装 npm install --save decimal.js 引入 import Decimal from "decimal.js" 使用 new Decimal function adddDecimals (...decimals) { let sum new Decimal(0) decimals.forEach(decimal > { sum sum.plus(decimal) }) return sum.toNumber() } const res …

HarmonyOS应用开发者基础认证,Next版本发布后最新题库(7.29更新)

判断题 10题 10分 1、在http模块中&#xff0c;多个请求可以使用同一个httpRequest对象&#xff0c;httpRequest对象可以复用。&#xff08;错误&#xff09; 2、订阅dataReceiverProgress响应事件是用来接收HTTP流式响应数据。&#xff08;错误&#xff09; 3、UIAbility是系…

【刷题汇总 -- 笨小猴、 主持人调度(一)、分割等和子集】

C日常刷题积累 今日刷题汇总 - day0251、笨小猴1.1、题目1.2、思路1.3、程序实现 2、主持人调度&#xff08;一&#xff09;2.1、题目2.2、思路2.3、程序实现 3、分割等和子集3.1、题目3.2、思路3.3、程序实现 -- 0/1背包问题 4、题目链接 今日刷题汇总 - day025 1、笨小猴 1…

【MIT 6.5840(6.824)学习笔记】Raft

1 脑裂 许多容错系统使用一个单主节点来决定主副本。 MapReduce&#xff1a;由单主节点控制计算复制。GFS&#xff1a;主备复制数据&#xff0c;并由单主节点确定主拷贝的位置。VMware FT&#xff1a;主虚机和备份虚机之间复制指令&#xff0c;需要单点的Test-and-Set服务确认…

【JavaEE】通过Linux部署Web项目到云服务器上

一.配置部署所需的环境. 1.1 什么是部署? 要想知道什么是部署, 就要先了解我们在日常开发的过程中所设计到的几种环境: 开发环境: 软件开发环境指的是开发人员在创建、测试和部署软件应用程序时所需的一系列硬件、软件、工具和流程的集合。它是为了支持软件开发过程而构建的…

[算法]归并排序(C语言实现)

一、归并排序的定义 归并排序&#xff08;Merge sort&#xff09;是建立在归并操作上的一种有效的排序算法。该算法是采用分治法&#xff08;Divide and Conquer&#xff09;的一个非常典型的应用。 二、归并排序的算法原理 归并排序的算法可以用递归法和非递归法来实现…

python中的类函数和静态函数

在python的类中&#xff0c;存在成员函数、类函数和静态函数。其中成员函数比较好理解&#xff0c;就是在类中普通函数&#xff0c;而类函数和静态化函数可能理解起来有点小难度。 class Dog:DEFAULT_COLOR The color for this dog is {}.def __init__(self, name, age, colo…

Git基本原理讲解、常见命令、Git版本回退、Git抛弃本地分支拉取仓库最新分支、如何将本地文件推送至github、.gitignore文件的使用

借此机会写篇博客汇总一下自己去公司实习之后遇到的一些常见关于Git的操作。 Git基本认识 Git把数据看作是对小型文件系统的一组快照&#xff0c;每次提交更新&#xff0c;或在Git中保存项目状态时&#xff0c;Git主要对当时的全部文件制作一个快照并保存这个快照的索引。同时…

【ROS 最简单教程 002/300】ROS 环境安装 (虚拟机版): Noetic

&#x1f497; 有遇到安装问题可以留言呀 ~ 当时踩了挺多坑&#xff0c;能帮忙解决的我会尽力 &#xff01; 1. 安装操作系统环境 Linux ❄️ VM / VirtualBox Ubuntu20.04 &#x1f449; 保姆级图文安装教程指路&#xff0c;有经验的话 可以用如下资源自行安装 ITEMREFERENCE…

vue3实战(通用后台管理系统)问题总结

npm install less vue-router element-plus -s elementplus 路由引入组件第二种写法&#xff1a; 使用动态的import( )语法(推荐使用)&#xff08;路由懒加载&#xff09; component:()>import(路径)component:()>import(/views/Main.vue)打包之后的文件将会异常的大&a…