当前位置: 首页 > article >正文

MySQL -安装与初识

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

在这里插入图片描述

文章目录

  • 安装
      • 1. 更新系统包列表
      • 2. 安装MySQL服务器
      • 3. 启动并验证MySQL服务
      • 4. 运行安全配置向导
      • 5. 验证MySQL登录
      • 6. 设置root用户密码
      • 7. 配置远程访问(可选)
      • 8. 测试连接
  • 初识 MySQL
      • 1. 什么是MySQL?
      • 2. 什么是数据库?
      • 3. 看看数据库
        • 创建数据库
        • 创建表
        • 插入查看数据
        • 数据库服务
        • 数据库结构与存储机制
        • 存储引擎

安装

我的系统: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前,先看看mysql和mysqld:

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.kler.cn/a/563728.html

相关文章:

  • 【linux】文件与目录命令 - sed
  • 基于Flask框架生产环境快速部署
  • React + TypeScript 数据模型驱动数据字典生成示例
  • word中对插入的图片修改背景色
  • Redisson使用场景及原理
  • HTML第二节
  • centos设置 sh脚本开机自启动
  • 算法系列之回溯算法
  • Redis多线程模型演进
  • Dockerfile 中的 COPY 语句:作用与使用详解
  • 基于Django的手办交易平台~源码
  • 小波变换背景预测matlab和python, pytorch样例
  • Go红队开发—并发编程
  • liunx安装redis并配置主从
  • 【Java项目】基于Spring Boot的考研资讯平台
  • 若依 ruoyi-vue 根据角色切换路由菜单权限 SAAS
  • lowagie(itext)老版本手绘PDF,包含页码、水印、图片、复选框、复杂行列合并、行高设置等。
  • https:原理
  • DevOps全流程
  • 【红队利器】单文件一键结束火绒6.0