mysql数据库的基本管理

本文详细介绍了Mysql数据库的基础管理方法,包括数据库的安装、基本操作、安全初始化、密码管理、用户授权等,并提供了数据库备份与还原的方法,还介绍了如何安装和使用phpMyAdmin进行图形化管理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.数据库介绍

(1) 什么是数据库
数据库就是个高级的表格软件
(2) 常见数据库
Mysql Oracle (Oracle公司) 
mongodb 
db2 sqlite (IBM公司)
sqlserver  (Windows)
其中最常用的就是Mysql,因为它是开源的
Mysql被Oracle公司收购后,Mysql的开发者把之前的Mysql重新做成mariadb
mariadb是Mysql的一个分支,它与Mysql是完全兼容的。
(3) 数据库中的常用名词##
字段 :表格中的表头
表 :表格
库 :存放表格的目录
查询 :对表格中的指定内容进行查看

2.mariadb的安装及软件基本信息

(1)安装mariadb

(2)软件基本信息

mariadb.service   启动服务名称
3306    默认端口号
/ etc / my.cnf.d / mariadb - server.cnf     主配置文件
/ var / lib / mysql      数据目录 , 当需要重新安装 mariadb 时需要清理此目录或备份

3.数据库开启及的安全初始化

(1)数据库开启

systemctl enable --now mariadb       开启mariadb服务并让其开机启动

(2)数据库安全初始化

刚安装完可以不需要密码登录数据库的root用户:

但是这样会出现安全隐患,所以需要安全初始化数据库

I. 执行安全初始化脚本
mysql_secure_installation  ##执行安全初始化命令

输入密码:因为还没设置密码,所以这里直接回车

是否设置密码:选是,然后设置密码

是否移除匿名用户的访问权利:选是

是否不允许远程登录root用户:选是

是否把测试库的访问权力禁掉:选是

是否刷新数据库的特权表:选是

然后数据库就安全初始化好了

不输密码登录被拒绝登录:

只有输入密码登录才可以进入数据库中:

II. 关闭数据库开放端口

可以查看到端口信息,如果端口信息这样外露,则可能会通过网络攻击数据库:

关闭数据库开放端口:

编辑这个文件: 

加上下图语句: 

开启跳过网络功能,1意为开启

重启mariadb数据库,无法搜到它的端口信息: 

4.数据库的基本管理 

(1)登录

这里的-uroot指登录root用户,-p指使用密码登录:

登录成功: 

(2)查看

SHOW DATABASES;      显示库名称
USE mysql;      进入 mysql
SHOW TABLES ;     显示库中的所有表
SELECT * FROM user;       查询user表中的所有数据
SELECT Host,User,Password FROM user;      查询指定字段
SELECT Host FROM mysql.user WHERE User = 'root'

显示库名称:

SHOW DATABASES;     显示库名称

注意:这里大小写都可以,但一般大写。后跟分号表示执行这个命令,没分号不执行命令

进入mysql库: 

USE mysql;     进入mysql

显示库中的所有表:

SHOW TABLES;    显示库中的所有表

查询所有数据:

SELECT * FROM user;      在user表中查询所有字段中的所有数据(user为mysql库中的一个表的                                              名称)

这里查询user表格中的所有数据

因为内容太多无法全部显示完所以看上去是乱码

查询指定字段:

SELECT Host,User,Password FROM user;     查询指定字段(字段指表格中的表头)

这里查询user表格中的Host,User,Password字段中的所有数据

Host的意义为User和Password中的数据能在哪里使用:

按条件选择指定字段查看:

这里查询user表中所有Host等于127.0.0.1的字段为User、Password和Select_priv中的信息:

如果目前所处位置在mysql库中,则在查询mysql库中的user表中的内容时,只需写user就可以(相当于相对路径)

这里查询user表中User为root的Host字段中的信息:

(3)新建

CREATE DATABASE westos;      新建库
CREATE TABLE linux (                新建表
username varchar( 6 ) not null,
password varchar( 30 ) not null
);
DESC linux;        显示表结构
INSERT INTO linux VALUES ( 'user1' , '123' );       插入数据
FLUSH PRIVILEGES;       刷新数据库

新建一个库westos:

CREATE DATABASE westos;     新建库

新建一个表userlist:

CREATE TABLE linux (                 新建表
username varchar( 6 ) not null,
password varchar( 30 ) not null
);

新建表userlist,前面的westos表示是建在westos库中的,因为这里所处位置不在westos库中所以必须这么写

执行的命令后不加分号可以分行输入,一行不好写所以分行写,结构更清晰

创建名为username的字段,其字段中的数据类型为varchar且长度不得超过10个字符,not null表示不能为空,数据必须写

创建名为password的字段,其字段中的数据类型为varchar且长度不得超过50个字符,not null表示不能为空,数据必须写

查看westos库下的所有表来证明这个表已经建立了:

查看表结构: 

DESC linux;        显示表结构

在表中插入数据:

一次插入单个值:

INSERT INTO linux VALUES ('user1','123');      插入数据

INSERT表示插入 INTO westos.userlist表示插入数据到westos.userlist这个表中,VALUES表示插入的是数据的值,括号内是插入的具体数据:

查看插入的数据: 

一次插入多个值:

这里要插入的是两个字段中的数据,所以括号中写入的数据为两个,且插入的数据用单引号包起来,要插入的不同行的数据的括号之间要用逗号隔开

FLUSH PRIVILEGES;      刷新数据库

如果正确插入数据完了之后能看到数据则不用刷新数据库,若看不到则需要刷新数据库后才能看到刚才插入的数据

(4)更改

ALTER TABLE redhat RENAME linux;        把名为redheat的表格改名为linux
ALTER TABLE linux ADD age varchar( 4 ) AFTER password;       在表linux中添加一个age字段,并且该字段数据类型为varchar,最大字符数为4,在挨着password字段后添加
ALTER TABLE linux DROP age;       把在表linux中的age这个字段删掉
UPDATE linux SET sex = 'g' WHERE username = 'user2' ;       把在表linux中的所有username字段值                                                                                                 为user2的sex字段改为g

注:对表格本身和表格的字段操作用ALTER TABLE,对字段中内容操作用UPDATE

I. 更改数据库的名称:

可以更改数据库的名称,但更改可能导致数据库中数据的丢失,如果硬要更改数据库名称,则需要在有关数据库的文件中进行更改:

在mariadb的数据目录/var/lib/mysql/中,可以看到westos库的数据目录

这里更改目录名称后就可以更改mariadb中的库名称了,但不推荐

II. 更改表格名

ALTER TABLE redhat RENAME linux;       把名为redheat的表格改名为linux

这里把名为userlist的表格改名为lee:

ALTER TABLE linux ADD age varchar(4) AFTER password;       在表linux中添加一个age字段,并且该字段数据类型为varchar,最大字符数为4,在挨着password字段后添加

插入新的字段age,AFTER username表示插入在username字段后一个位置紧挨着。若不加AFTER则插入在默认位置,默认位置为最后一列:

删除字段:

ALTER TABLE linux DROP age;       把在表linux中的age这个字段删掉

DROP意为丢弃,后跟想删掉的字段名称(若有多个字段重名则删除会报错)

更改表中数据内容:

将整个字段修改为同样的数据:

更改表westos中的所有age字段中的数据改为10

UPDATE linux SET sex='g' WHERE username='user2';       把在表linux中的所有username字段值                                                                                                 为user2的sex字段改为g

更改username表中所有username字段为user1并且password字段为123的age字段都改为20: 

(5)删除

DELETE FROM linux WHERE username = 'user2' and age = '18' ;    删除linux表中username字段为                                                                                                           user2并且age字段为18的所有数据
DROP TABLE linux ;        删除表linux
DROP DATABASE westos;           删除库westos

删除字段中的数据:

DELETE from linux where username='user2' and age='18';    删除linux表中username字段为                                                                                                           user2并且age字段为18的所有数据

这里删除了满足username=user3并且age=10的行的所有数据:

删除整个字段:

ALTER TABLE linux DROP age;       把在表linux中的age这个字段删掉

这里删除了password字段,其字段中的数据也被删除:

删除表:

DROP TABLE linux;        删除表linux

这里删除表username

删除库:

DROP DATABASE westos;          删除库westos

这里删除库westos,然后查看所有库,westos库已被删除:

5.数据库密码管理

(1)数据密码更改

mysqladmin -uroot -plee password westos

把root用户的密码从westos改为lee:

-u后加要改密码的用户名称  -p后加原始密码

验证密码更改:

(2)数据库密码破解

若忘记mysql中的root用户密码
mysqld_safe -- skip - grant - tables &        激活数据库时跳过它的授权表并且放后台运行
UPDATE mysql.user set Password = password( 'lee' ) WHERE User = 'root' ; 当未使用过 mysladmin 更改过密码
UPDATE mysql.user set authentication_string = password( 'lee' ) WHERE User = 'root' ;    当使用过
mysladmin 更改过密码
flush privileges;     刷新数据库
ps aux | grep mysql      查看有关mysql的进程
kill - 9 mysql的所有进程       关闭mysql 的所有进程
systemctl start mariadb       开启mariadb

数据库密码破解:

mysqld_safe --skip-grant-tables &        激活数据库时跳过它的授权表并且放后台运行

mysqld_safe  开启mysql的安全模式

先停止mariadb,然后开启mysql的安全模式并且激活数据库时跳过它的授权表,由于这个命令会占用终端,所以加一个“&”把它放后台运行。然后按回车就可以使用mysql命令登录数据库了:

然后查看mysql库中的user表中的所有数据:

当未使用过mysladmin命令更改过密码时如果要修改Password字段中的数据:

UPDATE mysql.user set Password=password('lee') WHERE User='root';

===========================================================

当使用过mysladmin命令更改过密码时如果要修改authentication_string字段中的数据:

UPDATE mysql.user set authentication_string=password('lee') WHERE User='root';

命令中的password指对设置的密码进行加密,否则lee是明文显示的

这里相当于把mysql库中的user表中的User字段为root的行中的authentication_string字段中的数据改为了westos并且加密westos这个数据,而这个westos就是修改后的密码,这条命令相当于是修改了root用户的密码为westos并且加密了这个密码:

修改完毕后若再查询mysql库中的user表:

就可以发现刚才修改过后的密码数据已经被加密了:

退出后用fg命令把在后台运行的mysqld_safe --skip-grant-tables命令调回前台后发现无法用ctrl+c结束命令,故而又将之打入后台挂起,然后用killall -9命令强制结束它,再查看进程中有没有与mysql命令有关的进程,若发现有,则用kill -9命令强行关闭掉它: 

之后重启mariadb,并且已经可以用刚才修改过的密码登录了: 

6.数据库用户授权

CREATE USER lee @localhost identified by 'lee' ;  ## 只能用 localhost 登陆
CREATE USER lee @ % identified by '%';  ## 可以通过网络或 localhost 登陆
#这里的'%'相当于所有,若直接为'%'则表示所有ip,等同于0.0.0.0
  若为ip中有'%',例如'192.168.17.%'则表示192.168.17.0这个子网内所有ip
GRANT INSERT,SELECT ON westos .* TO lee @localhost ;
SHOW GRANTS for lee @localhost ;
REVOKE SELECT ON westos .* FROM lee @localhost ;
DROP user lee @localhost ;
查看目前数据库中的用户:
mysql.user表中有关于目前数据库用户的信息

可以看到目前数据库中的用户只有root用户一个:

(1)创建数据库用户

创建一个数据库用户:

用户名:westos@localhost 若是创建的用户名@符后为localhost,则该用户只能在数据库所在的主机登录;若创建的用户名@符后为%,则该用户可以通过网络或者数据库所在的主机登录

密码:westos   identified by 'westos'表示设置的westos用户密码为westos

可以登录用户westos,但是发现看不到任何信息,需要用户授权后才可以看到: 

(2)给用户授权 

给用户授权:

用root登录后可以给用户westos@localhost授权:

这里授权为可以让用户westos@localhost对数据库westos中所有表进行插入和选择查看的操作:

然后可以查看用户westos@localhost的授权信息:

在库westos(需要root用户提前创建westos库)中插入信息: 

登录用户westos之后可以查看到westos库了,然后还可以使用这个库: 

可以选择性查看字段和对应的内容:

也可以插入数据,但不能删除表,因为没有给用户westos删除的权力: 

(3)收回权力

收回权力:

这里收回用户westos对westos库下的所有表的选择查看的权力:

测试:

登录用户westos后无法对westos库中的linux表进行选择查看,但是依然可以插入数据:

(4)删除用户

删除用户westos@localhost以及验证删除:

7.数据库的备份

mysqldump - uroot - p123 -- all - database
mysqldump - uroot - p123 -- all - database -- no - data
mysqldump - uroot - p123 westos
mysqldump - uroot - p123 westos > / mnt / westos.sql

可以在mysql命令时加-e直接对数据库进行非交互式的操作,而不是登录后进行交互式的操作:

-E和-N可以改变查看所有库的显示方式

-E  垂直打印查询的输出(行)

-N  输出结果时不要在结果中写入列名

备份全部数据库,包括数据:

备份全部数据库时不备份库中的数据,只是备份库中表的结构: 

备份库westos并把库中的数据以mysql语句的方式导入文件westos.sql中,然后可以在文件中查看到备份的库中内容: 

测试:

这里把westos库删除掉然后查看当前的所有库:

还原方法1:

建立库westos,然后将刚才的备份文件westos.sql中的数据导入库westos中,之后可以查看到库westos又存在了而且其中的数据也回来了:        

还原方法2:

编辑这个存放数据的备份文件:

在比较靠前的位置写入下图红框中的两行语句: 

保存退出编辑后输入红框中语句可以直接创建westos库然后使用westos库并且把数据导入westos库:

8.phpmyadmin的安装与使用 

安装Apache并且需要配置好网络连接:

解压并解档phpmyadmin压缩包,之后把压缩包删除并把解压后的目录重命名为mysqladmin: 

查看目录mysqladmin中内容: 

用这个模板文件生成配置文件,这里直接把模板文件复制后重命名成配置文件: 

此时搜索目前php支持的插件,发现其中并没有支持mysql数据库的插件:

但又需要用到php来让httpd执行脚本,所以搜索所有php有关的插件后搜索到了让php支持mysql的插件:

安装php和这个让php支持mysql的插件: 

可以通过浏览器访问到数据库: 

新建一个数据库:

可以查看到新建的库test: 

新建表名字并设置字段数: 

新建表(结构): 

然后下拉页面选择保存: 

可以查看到刚才建的表userlist:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值