MySQL -安装与初识

博客主页:【夜泉_ly

本文专栏:【暂无】

欢迎点赞👍收藏⭐关注❤️

文章目录

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

安装

我的系统:Ubuntu 22.04.4 LTS

下面用root操作:

1. 更新系统包列表

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

bash 复制代码
apt-get update

2. 安装MySQL服务器

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

bash 复制代码
apt-get install mysql-server -y

3. 启动并验证MySQL服务

  • 安装后服务会自动启动。验证状态:
bash 复制代码
systemctl status mysql
  • 若未运行,手动启动并设置开机自启:
bash 复制代码
systemctl start mysql
systemctl enable mysql

不过这个开机自启有点没用,

毕竟MySQL是跑在服务器上的,

而服务器一般不会关机🤣。


4. 运行安全配置向导

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

bash 复制代码
mysql_secure_installation

根据提示操作:

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

5. 验证MySQL登录

  • 方式1(默认无密码)

    bash 复制代码
    sudo mysql -u root
  • 方式2(密码登录) :配置密码后登录:

    bash 复制代码
    mysql -u root -p

6. 设置root用户密码

网上说 4.运行安全配置向导 那步就能设置用户密码,

但我这里没成功:

所以用 "ALTER_USER" 命令来设置:

sql 复制代码
-- 进入MySQL Shell:
mysql 

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

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


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

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

  1. 修改配置文件:

    bash 复制代码
    sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf

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

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

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

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

    bash 复制代码
    sudo ufw allow 3306/tcp

8. 测试连接

  • 本地测试:

    bash 复制代码
    mysql -u root -p
  • 远程测试(替换 IP 和 端口):

    bash 复制代码
    mysql -u 用户名 -h 服务器IP -P 端口 -p

初识 MySQL

1. 什么是MySQL?

认识MySQL前,先看看mysql和mysqld:

Bash 复制代码
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语言初学者,如果你有任何疑问或建议,欢迎随时留言讨论!让我们一起学习,共同进步!

相关推荐
YGGP16 分钟前
【每日八股】Redis篇(二):数据结构
数据结构·数据库·redis
hxung20 分钟前
MySQL面试学习
学习·mysql·面试
愉悦的麻婆豆腐26 分钟前
Neo4j使用neo4j-admin导入csv数据方法
数据库·neo4j
莳花微语1 小时前
使用MyCAT实现分布式MySQL双主架构
分布式·mysql·架构
he258191 小时前
centOS 7.9 安装JDK MYSQL
java·mysql·centos
qq_529835354 小时前
对计算机中缓存的理解和使用Redis作为缓存
数据库·redis·缓存
月光水岸New7 小时前
Ubuntu 中建的mysql数据库使用Navicat for MySQL连接不上
数据库·mysql·ubuntu
狄加山6757 小时前
数据库基础1
数据库
我爱松子鱼7 小时前
mysql之规则优化器RBO
数据库·mysql