- 数据库
数据库是指按照某些特定结构来存储数据资料的数据仓库。简单来说是本身可视为电子化的文件柜——存储电子文件的处所,用户可以对文件中的数据进行新增、截取、更新、删除等操作。数据库管理系统是一种能够对数据库中存放的数据进行建立、修改、删除、查找、维护等操作的软件程序。它通过把计算机中具体的物理数据转换成适合用户理解的抽象逻辑数据,有效地降低数据库管理的技术门槛。- 常见的数据库
- SQL Server:是由微软公司开发的关系型数据库管理系统,一般用于 Web 上存储数据。
- DB2:IBM 公司研制的一种关系型数据库系统。DB2 主要应用于大型应用系统,具有较好的可伸缩性
- Oracle Database:又名 Oracle RDBMS,或简称 Oracle。是甲骨文公司的一款关系数据库管理系统。到目前仍在数据库市场上占有主要份额。
- mySQL 是一个小型关系型数据库管理系统,开发者为瑞典 MySQL AB 公司。在2008年1月16号被 Sun 公司收购。而 Sun 公司又被 Oracle 公司收购。被 Oracle 公司收购之后,从开源软件转变成为了“闭源”软件。
- MariaDB 数据库管理系统是 MySQL 的一个分支,主要由开源社区在维护,采用 GPL 授权许可 MariaDB 的目的是完全兼容 MySQL,包括 API 和命令行,使之能轻松成为 MySQL 的代替品。
下面来介绍MariaDB 数据库的命令和基本操作
安装如下:
[root@mariadb-server ~]# yum install mariadb-server.x86_64 -y
Loaded plugins: langpacks
Resolving Dependencies
--> Running transaction check
.........(我是用来省略的).........
Installed:
mariadb-server.x86_64 1:5.5.35-3.el7
Dependency Installed:
mariadb.x86_64 1:5.5.35-3.el7
Complete!
安装完成后启动 mariadb
[root@mariadb-server ~]# systemctl start mariadb #启动服务
[root@mariadb-server ~]# systemctl enable mariadb.service #开机启动
MariaDB 数据库软件程序安装完毕并成功启动后立即使用。时存在安全隐患的,为了确保数据库的安全性和正常运转,需要先对数据库程序进行初始化操作对数据库进行安全初始化。
关闭网络接口
数据库是不裸露在互联网上的需要关闭该服务的网络接口
[root@mariadb-server ~]# netstat -antlpe | grep mysql
#通过此命令来查看网络端口是否关闭‘
若是未关闭,则对 mysql 的主配置文件进行操作
[root@mariadb-server ~]# vim /etc/my.cnf #编辑 mysql 的注配置文件
在文件第十行添加如下内容:
10 skip-networking = 1 #跳过网络
编辑完成后重启服务
[root@mariadb-server ~]# systemctl restart mariadb.service
再执行命令对 mysql 进行初始化操作
[root@mariadb-server ~]# mysql_secure_installation #通过此命令进行初始化
.........(省略描述信息).........
Enter current password for root (enter for none):
#为root输入当前密码(不输入): 当前数据库密码为空,直接回车
OK, successfully used password, moving on...
.........(省略描述信息).........
Set root password? [Y/n] #设置 root 管理员在数据库中的密码值
New password: (输入密码)
Re-enter new password:(确认密码)
Password updated successfully!
Reloading privilege tables..
... Success!
.........(省略描述信息).........
Remove anonymous users? [Y/n] #删除匿名账户
... Success!
.........(省略描述信息).........
Disallow root login remotely? [Y/n] #禁止 root 用户远程登录
... Success!
.........(省略描述信息).........
Remove test database and access to it? [Y/n] #删除 test 数据库并取消他的访问权限
- Dropping test database...
... Success!
- Removing privileges on test database...
... Success!
.........(省略描述信息).........
Reload privilege tables now? [Y/n] #刷新授权表让初始化后的设定立即生效
... Success!
Cleaning up...
初始化完成后完成后匿名用户将无法对mysql 进行操作,需要通过用户认证来登陆mysql
[root@mariadb-server ~]# mysql -uroot -p
Enter password: #输入密码后对数据库进行操作
执行如下:
查看网络端口是否打开
编辑配置文件关闭网络端口
进行初始化(部分截图)
初始化完成后,以用户验证的方式对数据库进行操作
注:
数据库中的命令必须以分号 ‘ ; ’ 结尾,否则将视为一行语句
数据库由不同的小库(database)组成,每个小的数据库又由存放不同数据的表(table)组成,表中的信息靠不同的字段进行划分
基本操作如下:
进入数据库后进行操作
MariaDB [(none)]> SHOW DATABASES; #查看数据库中有多少库
MariaDB [(none)]> USE database_name; #指定使用的数据库
MariaDB [mysql]> SHOW TABLES; #显示当前数据库中的表单
MariaDB [mysql]> DESCRIBE table_name; #描述表单(可简写为 DESC)
MariaDB [mysql]> SELECT * FROM table_name; #从表单中选中某个记录值
# '*'表示全部,可以指定具体信息
要想让查询结果更加精准,可以将 select 与 where 命令结合使用。其中,where 命令是
在数据库中进行匹配查询的条件命令。
执行如下:
查看数据库中有多少库(SHOW DATABASES;)
指定使用的数据库(USE database_name)
显示当前数据库中的表单(SHOW TABLES;)
描述表单(可简写为 DESC,DESCRIBE table_name; )
从表单中选中某个记录值(SELECT * FROM table_name; )
从表单中选中指定记录值(SELECT Host,User,Password FROM user; )
MariaDB [none]> CREATE DATABASE database_name; #创建新的数据库
MariaDB [test]> CREATE TABLE custom( #创建表单 custom
-> username varchar(8) not null, #同时建立字段 username
#varchar 可变长字符串
#not null 不能为空
-> password varchar(16) not null);
指令 INSERT 可以为表单插入信息
MariaDB [test]> INSERT INTO custom(username,password) values('user1','123');
#在 custom 表中插入值 username = user1,password = 123
注:
数据库的信息在储存在: /var/lib/mysql 中
MariaDB [test]> FLUSH PRIVILEGES; #刷新数据库信息
MariaDB [test]> ALTER TABLE custom RENAME kehu; #修改表单的名字
MariaDB [test]> ALTER TABLE kehu ADD age varchar(8);
#为表单添加新的字段,默认添加在最后面
MariaDB [test]> ALTER TABLE kehu DROP age; #删除 age 子段
MariaDB [test]> ALTER TABLE kehu ADD age varchar(8) AFTER username;
#添加到指定位置,不要在最开始添加
更改表单内数据
MariaDB [test]> UPDATE kehu SET age = '4' WHERE username = 'user1';
#将表单中 username = user1 的 age 字段的值改为 4
MariaDB [test]> DELETE FROM kehu WHERE username = 'user1';
#从表单 kuhu中删除 用户名为user1 的所有字段
MariaDB [test]> DROP TABLE kehu; #删除表单 kehu
以上是在选择了数据库后进行的操作,还可以 通过 database_name.table_name
即 test.kehu 的形式进行操作
MariaDB [test]> DROP DATABASE test; #删除数据库 test
执行如下:
重命名表单
为表单添加新的字段
从表单中删除指定字段
添加字段到指定位置
更新指定字段的信息
删除指定信息的所有字段
删除指定表单
删除指定数据库
为了保障数据库系统的安全性,以及让其他用户协同管理数据库,我们可以在 MariaDB 数据库管理系统中为他们创建多个专用的数据库管理账户,然后再分配合理的权限,以满足他们的工作需求。为此,可使用 root 管理员登录数据库管理系统,然后按照“CREATE USER 用户名@主机名IDENTIFIEDBY’密码’; ”的格式创建数据库管理账户。
1.建立:
MariaDB [(none)]> CREATE USER linux@localhost identified by '123';
#为数据库建立本地用户'linux',密码为‘123’并且只能在本地登录操作
MariaDB [(none)]> GREATE USER test@'%' identified by 'passwd2'
#建立远程用户'test',密码为'passwd2',可以从远程任意主机登录 mysql
建立用户后必须对建立的本地用户进行授权,否则本地用户无法进行操作
2.授权:
MariaDB [(none)]> GRANT SELECT on test.* to linux@localhost;
#授 linux 用户在 test 数据库下的对所有表单的 SELECT 权限
MariaDB [(none)]> GRANT all on test.* to linux@localhost;
#授权 linux 用户在 test 数据库下的所有权限
MariaDB [(none)]> FLUSH PRIVILEGES;
#通过此命令重新加载授权表
MariaDB [(none)]> SHOW GRANTS FOR linux@localhost;
#查看用户的权限
MariaDB [(none)]> REVOKE all on test.* FROM linux@localhost;
#撤销用户权限
3.删除用户
MariaDB [(none)]> DROP USER linux@localhost;
执行如下:
创建本地用户
为本地用户 linux 赋予 SELECT 权限
查看本地用户权限
删除本地用户对 数据库 test 下的表单的所有权限
删除本地用户
在创建本地用户后可通过本地用户进行登录,并执行符合用户又有权限的操作,越权则无法执行
通过建立的本地用户登录 mysql
可以对 test 数据库进行 SELECT 操作,无法进行修改
1.修改用户密码
- 修改本地普通用户密码
在 mysql 中选定 mysql 数据库
执行:
MariaDB [mysql]> UPDATE user SET Password = password('456') WHERE User = 'linux';
#用户信息存放在 mysql 数据库的 user 表单内,可通过对表单信息修改从而修改用户密码
#Password = password('456') 是以 password 的形式对密码进行加密,否则将会以明文的形式出现在表单中
- 修改超级用户密码
在 shell 中执行:
[root@mariadb-server ~]# mysqladmin -uroot -p123 passwd 'redhat'
#通过此命令直接进行密码修改
或是在 mysql 中
MariaDB [(none)]> SET Password = password('redhat');
#通过此指令修改超级用户密码
执行如下:
修改本地普通用户密码
通过执行 mysqladmin 修改 root 用户密码
通过 SET Password = password(‘redhat’); 来修改 root 用户密码
2. 忘记 root 用户密码
若是忘记 root 用户密码可执行以下操作来进行修改
[root@mariadb-server ~]# systemctl stop mariadb.service
#关闭 mariadb 服务
执行:mysqld_safe #MySQL服务器启动脚本
[root@mariadb-server ~]# mysqld_safe --skip-grant-tables &
#跳过mysql 授权表并把命令打入后台
#跳过grant-tables授权表 不需要认证登录本地mysql数据库
登录 mysql 后
MariaDB [(none)]> UPDATE mysql.user SET Password = password('密码') WHERE User='root';
#修改root用户密码
#Password=password('密码') 以 password 的形式进行加密,显示信息不为明文
退出 mysql
[root@mariadb-server ~]# killall -p mysqld_safe
#关闭 killall -9 mysqld_safe 关闭跳过授权表命令
[root@mariadb-server ~]# ps -aux | grep mysql
查看与 mysql 有关的所有进程 ps -aux | grep mysql 并 kill -9 结束他们
[root@mariadb-server ~]# systemctl start mariadb
#重新启动数据库服务
执行如下:
关闭 mariadb 服务,跳过mysql 授权表并把命令打入后台,修改 root 用户密码,退出 mysql
结束 mysqld_safe 并结束与 mysql 有关的所有进程,之后重启 mariadb 服务,密码修改成功
注:
可以不进入 mysql 就对mysql 进行操作:
如 [root@mariadb-server ~]# mysql -uroot -predhat -e "show databases;"
执行对数据库查询的操作
mysqldump #数据库备份程序
[root@mariadb-server ~]# mysqldump -uroot -predhat --all-database
#对所有数据库进行备份
-- MySQL dump 10.14 Distrib 5.5.35-MariaDB, for Linux (x86_64)
--
-- Host: localhost Database:
-- ------------------------------------------------------
-- Server version 5.5.35-MariaDB
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
.........(我是用来省略的).........
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
-- Dump completed on 2018-05-28 7:15:25
[root@mariadb-server ~]# mysqldump -uroot -predhat --all-database
--no-data
#对所有数据库的框架进行备份,不备份数据
以上备份数据信息仅显示在 SHELL 中
[root@mariadb-server ~]# mysqldump -uroot -predhat test > /mnt/test.sql
将数据库 test 备份,将信息重新定义到 /mnt/test.sql 中
若对数据库 test 进行了错误操作,如删除等操作
可通过以下两种方式进行恢复:
(1) 执行:
[root@mariadb-server ~]# mysql -uroot -predhat -e "CREATE DATABASE test;"
#先创建数据库 test
[root@mariadb-server ~]# mysql -uroot -predhat test < /mnt/test.sql
#将备份的数据导入数据库中
(2) 执行:
[root@mariadb-server ~]# vim /mnt/test.sql
#对备份文件进行编辑
执行如下:
在'DROP TABLE IF EXISTS `custom`;'一行前加上
CREATE DATABASE test;
USE test;
21 CREATE DATABASE test;
22 USE test;
23 DROP TABLE IF EXISTS `custom`;
再执行:
[root@mariadb-server ~]# mysql -uroot -predhat < /mnt/test.sql
#进行对数据库的备份
执行如下:
对 test 数据库进行备份,可看到文件内容正确
删除 test 数据库
通过方法一进行恢复
编辑 /mnt/test.sql
通过方法二实现恢复
持续通过命令进行数据库管理略显繁琐,我们可以借由 phpMyAdmin 来实现通过 Web 的方式进行对数据库的管理
phpMyAdmin 是一个以PHP为基础,以Web-Base方式架构在网站主机上的MySQL的数据库管理工具,让管理者可用Web接口管理MySQL数据库。
首先安装 httpd服务,php 服务
[root@mariadb-server ~]# yum install php httpd -y #安装 php httpd
.........().........
Installed:
httpd.x86_64 0:2.4.6-17.el7 php.x86_64 0:5.4.16-21.el7
Complete!
[root@mariadb-server ~]# yum install php-mysql.x86_64 -y #安装 php-mysql
.........(我是用来省略的).........
Installed:
php-mysql.x86_64 0:5.4.16-21.el7
Complete!
还需要安装适用用版本的 phpMyAdmin,可以在 phpMyAdmin 官网下载对应版本的
我这里安装的是 php 5.4.16-21.el7 版本,只支持 phpMyAdmin 4.0.10.20 及其以下版本
我安安装 phpMyAdmin-3.4.0-all-languages.tar.bz2
[root@mariadb-server ~]# tar jxf /mnt/phpMyAdmin-3.4.0-all-languages.tar.bz2
将解压后的目录重命名为mysqladmin,并移动到 /var/www/html/ 下
[root@mariadb-server ~]# cp -r phpMyAdmin-3.4.0-all-languages /var/www/html/mysqladmin
[root@mariadb-server ~]# cp /var/www/html/mysqladmin/config.sample.inc.php /var/www/html/mysqladmin/config.inc.php
#将配置文件创建
[root@mariadb-server ~]# systemctl restart httpd.service
#重启 httpd 服务
在浏览器中检索 本机IP/mysqladmin 对mysql 进行管理
如果无法启动,查看浏览器缓存,是否清除,火墙是否关闭
执行如下:
phpMyAdmin 官网的下载提示:对应的 php 版本,对应适当的 phpMyAdmin
安装完成后,在浏览器中检索 本机IP/mysqladmin ,语言项选择中文
输入mariadb 的用户名,密码进行管理操作
进入管理界面
选择 test 数据库的 custom 表单
修改username = user1 的 password 为 222
执行后显示如下
在主机中查看数据库表单信息