世界上主流数据库种类很多,有如下情况:
而我们这里主要用的就是 MySQL
我这里是使用 Ubuntu 系统对 MySQL 进行的使用,大家需要在自己 Linux 上进行安装的可以下面内容
① 更新软件包列表
sudo apt update
② 安装 MySQL 服务器
# 查看可使用的安装包
sudo apt search mysql-server
接下来可以使用以下命令安装MySQL服务器:
# 安装最新版本
sudo apt install -y mysql-server
# 安装指定 8.0 版本
sudo apt install -y mysql-server-8.0
🔥 如果不加 -y
会在安装过程中,系统将提示你设置MySQL的root密码。我们需要确保密码容易记住,因为你将在以后需要用到它。 我们这里加了 -y 所以默认没有设置密码
③ 启动 MySQL 服务
安装完成后,MySQL服务会自动启动,未启动则使用以下命令启动MySQL服务:
sudo systemctl start mysql
然后我们这里是把 MySQL 设置为 开机自启动,就不用我们自己每次来调了
sudo systemctl enable mysql
④ 检查 MySQL 状态
sudo systemctl status mysql
至此,我们已经成功在线安装了MySQL服务器。
当前我们也可以用查看进程的方式来查看 当前 MySQL 是否成功安装
ps ajx | grep mysql
⑤ 登录 MySQL
首先,使用 root
用户登录到 MySQL。打开终端并输入以下命令:
sudo mysql -u root -p
⑥ 更改 root 密码
# 设置密码 mysql8.0
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '新密码';
# 刷新缓存
flush privileges;
⑦ 修改 MySQL 配置允许远程连接
编辑 MySQL 配置文件,通常在 /etc/mysql/mysql.conf.d/mysqld.cnf 或 /etc/mysql/my.cnf
sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
🔥 找到 bind-address 和mysqlx-bind-address项,把127.0.0.1更改为 0.0.0.0 或注释掉这两行,以允许从任何 IP 地址连接。
bind-address = 0.0.0.0
mysqlx-bind-address = 0.0.0.0
修改之后,保存后并退出编辑器后,重启 MySQL 服务以应用更改。
sudo systemctl restart mysql
⑧ 测试远程连接(自选)
从另一台计算机上,尝试使用新设置的 root
用户和密码远程连接到 MySQL 服务器。
mysql -h [服务器IP地址] -u root -p
🔥 完成这些步骤后,root 用户应该能够从远程位置登录到 MySQL 服务器,并且密码也已设置完成 。请确保网络和防火墙设置允许远程连接到 MySQL 服务器(默认端口为 3306)。
🔥 要在 Ubuntu 系统上彻底卸载 MySQL,您可以按照以下步骤操作。请注意,这将完全移除 MySQL,包括所有数据和配置文件。在进行这些操作之前,一定要备份之前的所有重要数据。
① 停止 MySQL 服务
sudo systemctl stop mysql
② 卸载 MySQL 安装包
使用 apt-get 命令卸载 MySQL 服务器及其相关软件包。
sudo apt-get remove --purge mysql-server mysql-client mysql-common
③ 删除配置和数据文件
🔥 删除 MySQL 的配置文件和数据目录。这一步是必要的,因为 apt-get remove --purge 可能不会删除所有文件。
sudo rm -rf /etc/mysql /var/lib/mysql
sudo rm -rf /var/log/mysql
④ 删除 MySQL 用户 和 组
如果我们想要删除 MySQL 用户和组,可以执行以下命令:
sudo deluser mysql
sudo delgroup mysql
完成以上步骤后,MySQL 应该已经从您的系统中彻底卸载。在重新安装 MySQL 或安装不同版本的 MySQL 之前,确保系统已经清理干净。
Job for mysqld.service failed because the control process exited with error code.
See "systemctl status mysqld.service" and "journalctl -xe" for details.
🔥 然后这个问题在网上那个时候又没找到一个靠谱的方案,然后就去找了一个大佬帮忙看看,大佬帮我看了好一会之后,还是操作不了,可能是我之前的一系列操作出现了啥问题,真的强烈建议不要看到网上教什么就直接输入什么了,至少先了解一下那个指令是啥起码,最后的最后还是老老实实的选择了重装系统,血的教训 !!!
mysql -h 127.0.0.1 -P 3306 -u root -p
注意:
补充一个指令 -- 清屏
mysql> system clear
站在 服务器 角度 来理解 MySQL
mysql 其实就是一套给我提供数据存取的服务的网络程序
🚀 存储数据用文件就可以了,为什么还要弄个数据库? 主要是因为 文件保存数据 有以下几个缺点:
🔥 一般的文件确实提供了数据的存储功能,但是文件并没有提供非常好的数据管理能力(用户角度) (理解:按照内容进行字段性提取,都需要程序员自己去做,不大方便)
而数据库的存储,用到了如下的存储介质:
数据库的水平是衡量一个程序员水平的重要指标。
数据库本质:对数据内容存储的一套解决方案你给我字段或者要求,我直接给你结果就行
💧 MySQL 是一个可移植的数据库,几乎能在当前所有的操作系统上运行,如 Unix/Linux、Windows、Mac 和 Solaris 。各种系统在底层实现方面各有不同,但是 MySQL 基本上能保证在各个平台上的物理体系结构的一致性。
其实主要的 SQL 指令操作,在这篇博客已经讲过了,大家可以看看 【MySQL学习】:关系数据库标准语言SQL
https://cloud.tencent.com/developer/article/2458305
之前在这篇博客里面我们也谈过一些内容,感兴趣的朋友们可以看看
从 InnoDB 到 Memory:MySQL 存储引擎的多样性
https://cloud.tencent.com/developer/article/2458307
💢 存储引擎是:数据库管理系统如何存储数据、如何为存储的数据建立索引和如何更新、查询数据等技术的实现方法。
MySQL的核心就是插件式存储引擎,支持多种存储引擎。
数据库的基本指令操作,在这篇文章基本都有讲过,我这里都是一些补充
https://cloud.tencent.com/developer/article/2458305
show databases;
-- 输出如下
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
4 rows in set (0.01 sec)
那我们查看的这些数据库在哪呢,还记得我们 MySQL 的一系列配置文件嘛,它里面有个 datadir,如下:
创建的数据库会保存在 /var/lib/mysql 下
CREATE DATABASE [IF NOT EXISTS] db_name [create_specification [,
create_specification] ...]
create_specification:
[DEFAULT] CHARACTER SET charset_name
[DEFAULT] COLLATE collation_name
说明:
🔥 说明:当我们创建数据库没有指定字符集和校验规则时,系统使用默认字符集:utf8,校验规则是:utf8_ general_ ci,一般来说我们直接 create database 数据库名 就行了
补充一条指令 -- 显示创建语句
mysql> show create database learn1;
+----------+----------------------------------------------------------------------------------------------------------------------------------+
| Database | Create Database |
+----------+----------------------------------------------------------------------------------------------------------------------------------+
| learn1 | CREATE DATABASE `learn1` /*!40100 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci */ /*!80016 DEFAULT ENCRYPTION='N' */ |
+----------+----------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
📚 说明:
言归正传,回到我们之前的话题 创建的数据库会保存在 /var/lib/mysql 下
理解 数据库 和 文件系统 的关联
所以什么叫 数据库 ?
🔥 那么就是上面看到的,在当前对应的数据路径 /var/lib/mysql 下,ls 所看到的这些文件和目录,然后这些数据库里面可以存取很多表,这就叫作数据库的表,我们的这套数据库文件并不是直接由程序员去手动修改这些文件,而是通过 MySQL 客户端然后直接去访问我们的 MySQL 服务(mysqld)
因此结论是:数据库本质其实也是文件!!!只不过这些文件并不是由程序员自己直接操作,而是由数据库服务帮我们进行操作,这个工作是谁做的? --> mysqld服务帮我们做的
字符集是什么?
创建数据库的时候,有两个编码集
数据库无论对数据做任何操作,都必须保证操作和编码必须是编码一致的
存数据的时候用什么编码,取的时候就得用什么编码去取
查看系统默认字符集以及校验规则
show variables like 'character_set_database';
show variables like 'collation_database'
查看数据库支持的字符集
show charset;
字符集主要是控制用什么语言。比如utf8就可以使用中文。
查看数据库支持的字符集校验规则
show collation;
现在也知道创建数据库了,也知道编码和校验规则了。两个合并下面就可以创建出指定编码和校验规则的数据库了。
如下就使用 gbk,不适用 utf8 了
create database d3 charset=gbk collate gbk_chinese_ci;
数据库配置文件中配置这个编码有什么意义呢?
那问题又来了,今天为什么又要设置数据库编码呢?
ALTER DATABASE db_name
[alter_spacification [,alter_spacification]...]
alter_spacification:
[DEFAULT] CHARACTER SET charset_name
[DEFAULT] COLLATE collation_name
DROP DATABASE [IF EXISTS] db_ name;
① 备份
# mysqldump -P3306 -u root -p 密码 -B 数据库名 > 数据库备份存储的文件路径
🔥 把test1.sql打开后,可以看到里面是大部分内容我们就见过的,如craete database test1、use test1还有后面插入数据等等。
其实它备份的时候,是把在这个数据库里做的有效操作全备份起来了。
所以说备份的不是只有数据,还把历史上所有有效操作全部备份起来了。
② 还原
mysql> source D:/mysql-5.7.22/mytest.sql
两个注意点:
注意事项
如果备份的不是整个数据库,而是其中的一张表,怎么做?
mysqldump -u root -p 数据库名 表名1 表名2 > D:/mytest.sql
同时备份多个数据库
mysqldump -u root -p -B 数据库名1 数据库名2 ... > 数据库存放路径
show processlist;
-- 示例
mysql> show processlist;
+-----+-----------------+-----------+------+---------+--------+------------------------+------------------+
| Id | User | Host | db | Command | Time | State | Info |
+-----+-----------------+-----------+------+---------+--------+------------------------+------------------+
| 5 | event_scheduler | localhost | NULL | Daemon | 366405 | Waiting on empty queue | NULL |
| 163 | root | localhost | NULL | Query | 0 | init | show processlist |
+-----+-----------------+-----------+------+---------+--------+------------------------+------------------+
2 rows in set, 1 warning (0.00 sec)
【*★,°*:.☆( ̄▽ ̄)/$:*.°★* 】那么本篇到此就结束啦,如果有不懂 和 发现问题的小伙伴可以在评论区说出来哦,同时我还会继续更新关于【MySQL】的内容,请持续关注我 !!