MySQL -安装与初识

news/2025/2/24 13:02:24

博客主页:【夜泉_ly】
本文专栏:【暂无】
欢迎点赞👍收藏⭐关注❤️

在这里插入图片描述

文章目录

  • 安装
      • 1. 更新系统包列表
      • 2. 安装MySQL服务器
      • 3. 启动并验证MySQL服务
      • 4. 运行安全配置向导
      • 5. 验证MySQL登录
      • 6. 设置root用户密码
      • 7. 配置远程访问(可选)
      • 8. 测试连接
  • 初识 MySQL

安装

我的系统:Ubuntu 22.04.4 LTS

下面用root操作:

1. 更新系统包列表

确保系统软件包列表是最新的:

apt-get update

在这里插入图片描述


2. 安装MySQL服务器

Ubuntu官方仓库包含MySQL Server包,直接安装:

apt-get install mysql-server -y

3. 启动并验证MySQL服务

  • 安装后服务会自动启动。验证状态:
systemctl status mysql

在这里插入图片描述

  • 若未运行,手动启动并设置开机自启:
systemctl start mysql
systemctl enable mysql

不过这个开机自启有点没用,
毕竟MySQL是跑在服务器上的,
而服务器一般不会关机🤣。


4. 运行安全配置向导

执行安全脚本以设置密码、移除匿名用户等:

mysql_secure_installation

根据提示操作:

  1. 输入是否启用“验证密码”组件(可选,增强密码复杂度检查)。
  2. 设置root用户密码(我没设成,它说有什么auth_socket,什么default)。
  3. 移除匿名用户。
  4. 禁止远程root登录。
  5. 移除测试数据库
  6. 重新加载权限表。

5. 验证MySQL登录

  • 方式1(默认无密码)
    sudo mysql -u root
    
  • 方式2(密码登录):配置密码后登录:
    mysql -u root -p
    

6. 设置root用户密码

网上说 4.运行安全配置向导 那步就能设置用户密码,
但我这里没成功:
在这里插入图片描述
所以用 “ALTER_USER” 命令来设置:

-- 进入MySQL Shell:
mysql 

-- 在MySQL提示符下执行:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的密码';
FLUSH PRIVILEGES;
exit;

注意:用MySQL时,一定要输 分号;


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

默认MySQL仅本地访问,需远程访问时:

  1. 修改配置文件:

    sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
    

    找到 bind-address = 127.0.0.1 改为 0.0.0.0(允许所有IP)或指定IP。

  2. 授权远程用户(示例为用户user和密码password):

    CREATE USER 'user'@'%' IDENTIFIED BY 'password';
    GRANT ALL PRIVILEGES ON *.* TO 'user'@'%' WITH GRANT OPTION;
    FLUSH PRIVILEGES;
    
  3. 重启MySQL生效:

    sudo systemctl restart mysql
    
  4. (如果需要)开放防火墙端口:

    sudo ufw allow 3306/tcp
    

8. 测试连接

  • 本地测试:
    mysql -u root -p
    
  • 远程测试(替换 IP 和 端口):
    mysql -u 用户名 -h 服务器IP -P 端口 -p
    

初识 MySQL

1. 什么是MySQL?

认识MySQL前,先看看mysqlmysqld:

which mysql
which mysqld

在这里插入图片描述
其中:

  1. mysql数据库服务的客户端
  2. mysqld是数据库服务的服务器端

因此:

  1. MySQL本质:基于CS模式的一种网络服务
  • 客户端(Client):发送 SQL 请求,以交互或程序化的方式从服务器查询或修改数据。
  • 服务器(Server):运行 MySQL 的核心服务程序(mysqld),负责处理客户端的请求,并在后台执行数据存储、管理及返回结果。

又因为,MySQL 是一种网络服务,
因此它会通过网络进行通信,
因此它需要绑定一个 端口号。

查询端口号:
在这里插入图片描述

所以,可以简单的下个定义了:
MySQL是一套给我们提供数据存取的服务的网络程序。

2. 什么是数据库

数据库又是什么呢?
这个我去网上逛了一圈,说法很多,大致分两种,

  1. 是在磁盘或内存中以特定的结构和格式组织、存储、管理数据的仓库。
  2. 是通过结构化方式持久化存储、组织和管理数据的系统。

有点抽象,不过感觉不用记,
毕竟纠结这种定义意义不大。

来看看数据库是干嘛的吧。

首先我们得知道,为什么不用文件存。
主要有以下几个缺点:

  1. 不利于查询、管理、储存
    数据越多越麻烦。
  2. 安全性
    比如很多单机游戏直接用文件存数据,
    所以可以用外挂去改。
    (比如葫芦侠,小学时经常用😋)

从用户的角度,
一般的文件确实提供了数据的存储功能,
但是并没有提供非常好的数据管理能力。

数据库的本质,
就是 对数据内容存储的一套解决方案,
你给它字段或者要求,它直接给你结果。

所以上面的这些,总结一下就是:
一套存储解决方案!
在这里插入图片描述

3. 看看数据库

下面简单见见数据库
mysql -h 127.0.0.1 -P 3306 -u root -p

在这里插入图片描述
其中:
-h 指明 MySQL 服务所在主机。
-P 指明我们要访问的端口号,默认 3306。
-u 指明登录用户。
-p 指明需要输入密码。

不过由于目前是本地登录,
-h -P不用写,mysql -u root -p也行。

样例:
使用MySQL建立一个数据库建立一张表结构,插入一些数据。
看看MySQL在LINUX中是如何表现的。

创建数据库
show databases;

在这里插入图片描述
创建数据库helloworld

create database helloworld;

在这里插入图片描述
在这里插入图片描述
exit;退出后,
此时,/var/lib/mysql中,发现一个同名目录已形成:

ls /var/lib/mysql

在这里插入图片描述
可以认为,在Linux下 建立数据库的本质就是建目录。

创建表

先使用数据库

use helloworld;

在这里插入图片描述
建一个表:

create table student(
name varchar(32),
age int,
gender varchar(2)
);

在这里插入图片描述
去看看helloworld目录,表已经生成了:
在这里插入图片描述
可以认为,在Linux下 建表的本质就是建文件。

插入查看数据

插入数据:

insert into student (name, age, gender) values ('张三', 18, '男');
insert into student (name, age, gender) values ('李四', 19, '男');

在这里插入图片描述
查看数据:

select * from student;

在这里插入图片描述

数据库服务

建目录,建文件,改文件,
这些工作是谁做的?mysqld

数据库本质其实也是文件!!
只不过这些文件并不由程序员直接操作,
而是由数据库服务帮我们进行操作:
在这里插入图片描述

数据库结构与存储机制

安装数据库服务器,
其实只安了个数据库管理系统程序,
这个程序可以管很多库,
一般一个应用对应一个库,
而一个库对应很多表:
在这里插入图片描述

存储引擎

存储引擎是数据库管理系统如何存储数据、如何为存储的数据建立索引和如何更新、查询数据等技术的实现方法。
MySQL的核心就是插件式存储引擎,支持多种存储引擎。

查看:

show engines;

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


希望本篇文章对你有所帮助!并激发你进一步探索编程的兴趣!
本人仅是个C语言初学者,如果你有任何疑问或建议,欢迎随时留言讨论!让我们一起学习,共同进步!


http://www.niftyadmin.cn/n/5864349.html

相关文章

ArcGIS Pro在洪水淹没分析中的应用与实践

如何使用ArcGIS Pro进行洪水淹没分析 洪水作为一种自然灾害,对人类社会和自然环境造成的威胁日益显著。 为了更好地理解和预测洪水事件,洪水淹没分析显得尤为重要。 ArcGIS Pro作为一款强大的地理信息系统(GIS)软件&#xff0c…

图书馆系统源码详解

本项目是一个基于Scala语言开发的图书馆管理系统。系统主要由以下几个部分组成:数据访问层(DAO)、数据模型层(Models)、服务层(Service)以及用户界面层(UI)。以下是对项目…

Linux MySQL 8.0.29 忽略表名大小写配置

Linux MySQL 8.0.29 忽略表名大小写配置 问题背景解决方案遇到的问题: 问题背景 突然发现有个大写的表报不存在。 在Windows上,MySQL是默认支持忽略大小写的。 这个时候你要查询一下是不是没有配置: SHOW VARIABLES LIKE lower_case_table…

论文阅读:Non-parametric Sensor Noise Modeling and Synthesis

今天介绍的这篇工作是 ECCV 2024 的一篇文章,关于建模 sensor 噪声分布的。 Abstract 本文提出了一种新颖的非参数传感器噪声模型,该模型可直接从拍摄图像中按强度级别构建概率质量函数。我们证明,与现有模型相比,我们的噪声模型…

怎么合并主从分支,要注意什么

在 Git 中合并主从分支(例如将 feature 分支合并到 main 分支)是一个常见操作。以下是具体步骤和注意事项: 合并分支的步骤 切换到主分支 git checkout main确保当前在 main 分支。 拉取最新代码 git pull origin main确保 main 分支是最…

【llm落地】从零到一,用DeepSeek打造智能BI工具:自然语言驱动数据洞察

在数据驱动的时代,商业智能 (BI) 工具已经成为企业决策的关键。然而,传统的 BI 工具往往操作复杂,需要专业技能才能驾驭。想象一下,如果用户只需要用 自然语言 就能轻松查询数据、获取分析结果甚至生成可视化图表,那将会多么高效和便捷! 本文将带你踏上从零到一构建智能…

【vector<int> arr 还是vector<int> arr 】关于空间的内存问题

两种写法分别是&#xff1a; int binarySearch(const std::vector<int>& arr, int target)int binary_search(const vector<int> data_set, int value) 这两种写法的主要区别在于参数传递的方式&#xff1a;引用传递和值传递。下面详细解释为什么推荐使用第一…

多源BFS(典型算法思想)—— OJ例题算法解析思路

目录 一、542. 01 矩阵 - 力扣&#xff08;LeetCode&#xff09; 算法代码&#xff1a; 代码逻辑思路 数据结构初始化 步骤一&#xff1a;队列初始化 步骤二&#xff1a;广度优先搜索 返回结果 关键点总结 广度优先搜索&#xff08;BFS&#xff09; 访问标记 复杂度…