mysql数据库的基本管理
1 数据库的介绍
- 什么是数据库:数据库就是个高级的表格软件
- 常见数据库:Mysql Oracle mongodb db2 sqlite sql-server……
- Mysql 比较常用 (原来属于SUN公司,在SUN被Oracle收购后,就属于Oracle公司)
- mariadb 是 mysql 的一个分支
- 数据库中的常用名词:
- 字段:表格中的表头
- 表:表格
- 库:存放表格的目录
- 查询:对表格中的指定内容进行查看
2 mariadb的安装
1)输入dnf search mariadb命令,查找软件:
输入dnf install mariadb-server.x86_64 -y,安装数据库:
2)输入 rpm -ql mariadb-server命令可以查看该软件的配置文件信息:
3 软件基本信息
基本信息 | 含义 |
---|---|
mariadb.service | 服务名称 |
/var/lib/mysql | 数据目录 |
/etc/my.cnf.d/mariadb-server.cnf | 主配置文件 |
/usr/lib/systemd/system/mariadb.service | 服务的启动脚本 |
3306 | 服务默认端口号 |
4 数据库开启
- systemctl enable --now mariadb
5 数据库的安全初始化
1)数据库开启后,直接输入mysal命令就可以登陆了,此时登陆是不需要登陆密码的,进入后输入“SHOW DATABASES;”命令就可以查看库,这种不要需要密码的登陆是非常不安全的,所以需要进行数据库的安全初始化:
2)设定数据库的基本安全初始化,输入 mysql_secure_installation命令(初始化脚本),然后系统会要求输入原始登陆密码,Enter current password for root (enter for none):,此时还没有设置过密码直接回车,就会进入到设置数据库管理员密码环节;设置完成后会提示:Remove anonymous users? [Y/n] y,表示是否要禁止匿名用户登录;Disallow root login remotely? [Y/n] y,表示是否禁止管理员通过远程登录;Remove test database and access to it? [Y/n] y,表示删除测试库;Reload privilege tables now? [Y/n] y,表示是否刷新数据库:
3)登陆数据库,注意-u表示指定用户,-p表示密码,密码也可以像用户一样直接书写到-p后面,但是这样安全性不高,所以采用以下方式登陆数据库:
4)此时可以查看到,数据库默认是对外开放端口的,会降低数据存储的安全性,所以在企业中需要将端口关闭:
5)编辑主配置文件/etc/my.cnf.d/mariadb-server.cnf,输入skip-networking=1,表示关闭数据库网络端口,重启服务:
设定完成后,端口关闭,查看时,就会不显示任何结果:
6 数据库的基本管理
6.1 查询
命令 | 含义 |
---|---|
SHOW DATABASES; | 显示库名称 |
USE 库名; | 进入某个库 |
SHOW TABLES; | 显示库中的所有表 |
SELECT * FROM user; | 查询user表中的所有数据 |
SELECT Host,User,Password FORM user; | 查询指定字段 |
SELECT Host FORM mysql.user WHERE User=‘root’; | 从 mysql 数据库的user表中查询User字段为root的Host信息 |
1)输入“mysql -uroot -p”进入数据库,进入后,输入SHOW DATABASES;命令可以查看库,以下的信息表示目前数据库中只有mysql这一个库:
2)想要进入这个库的时候,输入“USE+库名;”即可,注意,数据里面要使用分号表示命令结束:
3)进入库后,想要查看库里面的内容,可以使用“SHOW TABLES;"命令查看库里面有的表:
4)还可以使用“SHOW TABLES FROM mysql;”命令查看库里面的表,和上面的效果是一样的:
5)输入“SELECT * FROM user;”命令,可以查看表里面的全部内容:
6)输入“SELECT Host,User,Password FROM user;”命令,查看表里面的部分字段及其内容:
7)输入“SELECT Host,User,Password FROM user WHERE User=‘root’ and Host=‘localhost’;”命令,可以查看指定信息:
8)输入"SELECT Host FROM mysql.user WHERE User=‘root’;"命令查询也是可以的:
6.2 建立
命令 | 含义 |
---|---|
CREATE DATABASE westos; | 创建一个一个名为 westos 的库 |
CREATE TABLE linux(username varchar(6) not null,password varchar(30) not null); | 创建一个数据库表名为llinux,名称长度最多为 6 位且不能为空,密码长度最多为 30 位也不能为空 |
DESC linux; | 显示表的结构 |
INSERT INTO linux VALUES (‘user1’,‘123’); | 在 linux 表中插入数据,用户名为 user1, 密码为 123 |
FLUSH PRIVILEGES; | 刷新数据库 |
1)新建数据库:
2)新建表,同时说明表中的字段以及对字段的长度、是否可为空等要求。注意如下所示是为了好区分而换行,写在一行也可以,只要没有分号就说明还没有结束:
3)查看表的结构:
4)插入字段信息:
查询上面建立好的表的全部信息:
6)插入多条数据,注意插入时密码最好也用引号引起:
查询linux表的全部信息:
6.3 更改
命令 | 含义 |
---|---|
ALTER TABLE redhat RENAME linux; | 将 redhat表的名称更改为linux |
ALTER TABLE linux ADD age varchar(4) AFTER password; | 在linux表中添加名为age的字段,长度为 4 位,位于 password 字段之后 |
ALTER TABLE linux DROP age; | 删除 linux 表中的 age 字段 |
UPDATE linux SET sex=‘0’ WHERE username=‘user2; | 更改指定名称的信息 |
1)使用“ SHOW TABLES FROM lhy”或“USE lhy;和SHOW tables;”都表示查看lhy库里的表,其效果时=是一样的:
2)注意库的名称一般是不做修改的,如果有特殊情况需要修改,可以进入/var/lib/mysql,查看会看到,建立好的库名都可以在这里查看到;输入“mv lhy qjw”就表示修改库名,修改完成后,重启服务:
重启完成后,登陆数据库查看库,可以看到库名修改成功:
注意:在企业中不会进行如上操作,因为可能会导致数据丢失,此处又修改回来。
3)进入lhy库,查看表:
4)表名是可以做修改的,使用ALTER:
5)添加表的字段,此时添加时,若不指定字段的位置,默认字段是加在最后的:
可以在添加字段的时候指明字段的位置,加之前,可以先把刚才加的字段删除,再重新添加:
6)此时去查询表中信息时,可以看到表中age字段是空的,可以更新字段中的数据:
6.4 删除
命令 | 含义 |
---|---|
DELETE from linux WHERE username=‘user2’ AND age=‘18’ | 从linux表中删除username字段为 user2 和 age字段为 18 的数据 |
DROP TABLE linux; | 删除 linux 数据表 |
DROP DATABASE westos; | 删除 westos 库 |
注意:删除字段使用DELETE,删除表或者库使用DROP
7 数据库密码管理
7.1 数据库密码更改
若知道原始密码,只需要使用“mysqladmin -uroot -pwestos password liu”命令修改密码即可。
7.2 数据库密码破解
若忘记密码的情况下就需要破解密码
1)关闭数据库;进入数据库未开启授权表模式,后面加“&”表示在后台运行不占用终端,这样数据库就会跳过授权表被打开:
2)输入mysql直接进入数据库:
3)修改密码,mysql库里面的user表就是用户列表,修改里面的authentication_string字段。使用如下的方式修改ia密码后,可以看到,该密码在这个表里面是明文的:
4)为了提高安全性,所以使用下面的方式修改密码,此时密码就会处于加密状态:
5)更改完密码后使用ps命令查询mysql的进程,把所有进程结束:
结束后再查看进程是否存在,注意下面显示的是grep的进程,而不是mysql的进程:
6)重启服务,使用刚才设定的密码登陆:
7.3 如何重新安装数据库
当数据库出现无法解决的问题需要重新安装时:
- 输入 ”systemctl stop mariadb“命令 ,停止数据库
- 输入“ rm -fr /var/lib/mysql/ ”命令删除该目录
- 输入“ dnf reinstall mariadb-server”命令重新安装数据库
- 输入命令 “systemctl enable --now mariadb”开启数据库
8 数据库中用户建立和授权
1) 输入“SELECT Host,User FROM mysql.user”命令,可以看到当前用户只有root:
2)建立用户,若用户名后面写@localhost表示该用户只能在数据库所在的主机里面使用,by后面表示该用户的密码;若用户名后面写的是‘%’,表示该用户可以通过网络等登陆数据库,但是数据库有没有这样的功能还需要看数据库的端口是否开启:
3)删除liu@’%'的用户,重新创建一个不重名的%用户:
4)在数据库端口没有打开的前提下,%用户和localhost用户都无法使用远程登陆:
5)编辑/etc/my.cnf.d/mariadb-server.cnf文件,打开数据库端口,重启服务。此时%用户可通过加-h参数实现远程登陆,而localhost用户不可以:
6)使用liu用户登陆数据库,然后查看库,默认是看不到库的,因为没有权限:
7)使用root用户进入数据库,新建一个test数据库,建立一个test.userlist表,给表中插入数据,查看表的全部信息:
8)使用普通用户liu登陆,查看库,发现看不到任何内容。对该用户授权,使他可以查看到库。使用超级用户进入数据库,进行授权,授权完成后进行授权查看,出现SELECT说明授权成功:
10)使用普通用户进入数据库,就可以查看库:
查看库中表的内容:
在表中查插入内容时被拒绝:
11)若想插入,需要再进行授权,查看授权成功:
12)使用普通用户进入数据库,进行插入成功:
13)若想撤销授权,输入以下命令;然后查看,发现没有INSERT权力 :
14)此时普通用户想再次插入,被拒绝:
15)用户所拥有的的权力可以在mysql里面的user表中查看。删除用户命令如下:
9 数据库的备份
命令 | 含义 |
---|---|
mysqldump -uroot -p123 --all-database | 备份所有库 |
mysqldump -uroot -p123 --all-datebase --no-date | 只备份库的结构,不备份库的数据 |
mysqldump -uroot -p123 westos | 直接显示库的数据 |
mysqldump -uroot -p123 westos > /mnt/westos.sql | 将库的信息备份到指定文件中 |
1)查看数据库中的库:
2)输入“mysqldump -uroot -pwestos maysql(库名)”命令备份某一个要备份的数据库,系统就会把该库以sql语句的形式输出到屏幕上,此时只需要将文件的内容保存即可,输入“mysqldump -uroot -pwestos mysql > /mnt/mysql.sql”命令,将文件保存到/mnt/mysql.sql中:
3)要备份所有的库,输入“ mysqldump -uroot -pwestos --all-databases > /mnt/all.sql”命令:
4)只备份库的结构输入“mysqldump -uroot -pwestos --all-databases --no-data > /mnt/nodata.sql”命令,备份所有库,但是不备份库中的数据:
5)备份自己创建的库,输入“mysqldump -uroot -pwestos lhy > /mnt/lhy.sql”命令:
6)进入数据库,删除lhy库:
输入“mysql -uroot -pwestos -e “CREATE DATABASE lhy;””命令,先将库建立,否则无法备份进库中;然后输入“mysql -uroot -pwestos lhy< /mnt/lhy.sql”命令,将库还原,同时里面的数据也会自动被还原:
10 数据库的web界面管理器的部署
用图形的方式对数据库进行管理
1)安装phpmyadmin插件,输入“dnf install httpd php php-mysqlnd.x86_64 -y ”命令,php是基于apache发布的,所以需要安装上httpd:
2)开启httpd,添加火墙策略:
3)解压phpmyadmin包,到var/www/html/目录下,输入“tar jxf phpMyADmin-3.4.0-all-languages.tar.bz2 -C /var/www/html/”命令;进入该目录下查看,修改软件名称“mv phpMyADmin-3.4.0-all-languages mysqladmin”,为了方便访问:
4)进入mysqladmin,里面的Documentation.txt是软件的安装文档,可以查看;在mysqladmin目录里,输入“cp config.sample.inc.php config.inc.php ”复制模板,生成配置文件:
5)此时在网址处,输入172.25.254.136/mysqladmin就可以访问,此时就可以根据之前设置过的用户名,密码进行登陆:
6)主页面,其他一些查询、添加、修改、删除等操作都可以使用该图形化页面进行: