数据库概述:
数据库(Database)是按照数据结构来组织、存储和管理数据的建立在计算机存储设备上的仓库。
简单来说是本身可视为电子化的文件柜——存储电子文件的处所,用户可以对文件中的数据进行新增、截取、更新、删除等操作。
mariadb 简介:
MariaDB 数据库管理系统是 MySQL 的一个分支,主要由开源社区在维护,采用 GPL 授权许可 MariaDB 的目的是完全兼容MySQL ,
包括 API 和命令行,是 MySQL 的代替品MariaDB 由 MySQL 的创始人 Michael Widenius (英语:Michael Widenius )主导开发,
他早前曾以 10 亿美元的价格,将自己创建的公司 MySQL AB 卖给了 SUN ,此后,随着SUN 被甲骨文收购,
MySQL 的所有权也落入 Oracle 的手中MariaDB 名称来自 Michael Widenius 的女儿 Maria 的名字
mysql_secure_installation 是 mariadb 自带的安全初始化脚本
1.数据库的安装和基础配置
(1).安装数据库
[root@localhost ~]# yum install -y mariadb-server
(2).打开数据库
[root@localhost ~]# systemctl start mariadb.service
(3).安全初始化
@默认情况下,用户可以无密码登陆数据库,并且可以对数据库随意进行增删改查;这样很是很不安全的
[root@localhost ~]# mysql -u root
##安全初始化
[root@localhost ~]# mysql_secure_installation
测试:登陆数据库时需要输入密码
##方式1:
[root@localhost ~]# mysql -u root -p
##方式2:但这样登陆不安全
[root@localhost ~]# mysql -uroot -pwestos
(4).关闭数据库网络接口
@@默认情况下,数据库的网络接口是打开的,这样系统安全性很低
##查看数据库端口
[root@localhost ~]# netstat -antlupe | grep mysql
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 27 41336 4534/mysqld
##关闭网络接口
[root@localhost ~]# vim /etc/my.cnf
###################
skip-networking=1 ##跳过网络接口
##重启数据库服务
[root@localhost ~]# systemctl restart mariadb.service
测试:此时便可查看不到数据库服务端口
[root@localhost ~]# netstat -antlupe | grep mysql
2.数据库的管理
命令的方式:
(1)建立和查询
SHOW DATABASES; ##列出系统中所有的数据库
CREATE DATABASE westos; ##创建westos数据库
USE westos; ##进入westos数据库
SHOW TABLES; ##列出具体数据库中所有的表
CREATE TABLE linux (username varchar(10) not null,password varchar(20) not null); ##在具体数据库中建立linux表
DESC linux; ##查看linux表结构
INSERT INTO linux VALUES ('lee','123'); ##插入数据到linux表中
SELECT * FROM linux; ##查询linux表中的所有字段的数据信息
SELECT HOST,User,Password FROM user; ##查询linux表中指定字段的数据信息
实验:
##以root用户身份登陆数据库
[root@localhost ~]# mysql -uroot -p
(2)更改
##更改表结构
ALTER TABLE linux RENAME userdate; ##修改表名称
ALTER TABLE linux ADD age varchar(4); ##添加字段(默认在最后)
ALTER TABLE linux DROP age; ##删除字段
ALTER TABLE linux ADD age varchar(4) AFTER username; ##指定位置添加字段
##更改表数据
UPDATE linux SET age='10' WHERE username='westos'; ##更改表数据;WHERE表示条件,可以跟多个,一般用and连接
实验:
[root@localhost ~]# mysql -uroot -pwestos
更改表结构:
更改表数据:
(3)删除
DELETE FROM linux WHERE username='westos'; ##删除数据
DROP TABLE linux; ##删除表
DROP DATABASE westos; ##删除数据库
实验:
[root@localhost ~]# mysql -uroot -pwestos
网页的形式:
(1).安装网页管理数据库工具
##1.安装apache
[root@localhost ~]# yum install -y httpd
##2.重启apache
[root@localhost ~]# systemctl start httpd
[root@localhost ~]# ll /var/www/html
total 0
##3.关闭火墙
[root@localhost ~]# systemctl stop firewalld
网页测试:
##4.下载phpMyAdmin软件包,并将其放到apache的默认发布目录中
[root@[root@localhost ~]# cd /var/www/html/
[root@localhost html]# ls
phpMyAdmin-2.11.3-all-languages.tar.bz2
##5.解压phpMyAdmin软件包;只是为了生成Documentation.txt文件
[root@localhost html]# tar jxf phpMyAdmin-2.11.3-all-languages.tar.bz2
[root@localhost html]# ls
phpMyAdmin-2.11.3-all-languages phpMyAdmin-2.11.3-all-languages.tar.bz2
##6.重命名
[root@localhost html]# mv phpMyAdmin-2.11.3-all-languages mysqladmin
[root@localhost html]# ls
mysqladmin phpMyAdmin-2.11.3-all-languages.tar.bz2
##搜索软件包
[root@localhost ~]# yum search php
##7.安装php和php-mysql
[root@localhost ~]# yum install -y php.x86_64 php-mysql.x86_64
##8.重启apache
[root@localhost html]# systemctl restart httpd
网页测试:
##查看到安装的php软件包均为5.4版本的;符合要求
[root@localhost mysqladmin]# rpm -qa | grep php
##进入解压包中
[root@localhost mysqladmin]# cd mysqladmin
##备份文件
[root@localhost mysqladmin]# cp config.sample.inc.php config.inc.php
##查看
[root@localhost mysqladmin]# less Documentation.txt
##9.(直接在备份文件中更改)
[root@localhost mysqladmin]# vim config.inc.php
##10.重启apache
[root@localhost mysqladmin]# systemctl restart httpd
网页测试:(注意:如果还是没有出现登陆界面,此时可能的原因是网页缓存问题,此时只需要清理缓存即可 )
(2).网页形式管理数据库
先在shell中登陆数据库并用命令创建westos数据库:
以root用户身份登陆数据库:(密码是最开始做数据库的安全初始化时设定的密码)
进入数据库:
创建表:
在shell中登陆的数据库可以查看到新建的linux表(说明网页管理数据库与命令管理数据库效果一样)
插入数据:
删除表中数据:
删除linux表:
删除westos数据库:
3.数据库用户授权
SELECT User,Host FROM mysql.user; ##查看数据库存在的用户
CREATE USER lee@localhost identified by 'lee'; ##创建用户并设定用户密码
SHOW GRANTS FOR lee@localhost; ##查看具体用户所拥有的权限
GRANT SELECT on westos.* TO lee@localhost; ##给用户授权
REVOKE DELETE on westos.* from lee@localhost; ##撤回权力
DROP USER lee@localhost; ##删除数据库用户
FLUSH PRIVILEGES; ##刷新
常用的具体的权限有:
SELECT ##查询功能
CREATE ##创建表
INSERT ##插入数据
DELETE ##删除表数据
DROP ##删除表/数据库
实验:
[root@localhost ~]# mysql -uroot -pwestos
创建数据库用户:
再打开一个shell,以lee用户身份登陆数据库(用于测试)
用户授权:
撤销用户权力:
删除数据库用户:
4.数据库的备份
##备份数据库资料
mysqldump -uroot -pwestos --all-database > /mnt/westos.all #备份所有数据库资料
mysqldump -uroot -pwestos --all-database --no-data > /mnt/westos.err #只备份数据库的数据结构,不备份数据库的数据信息
mysqldump -uroot -pwetos westos > /mnt/westos.sql ##备份westos数据库资料
##恢复数据库信息
方法1:
vim /mnt/westos.sql
#######
CREATE DATABASE westos;
USE westos;
mysql -uroot -pwestos -e 'SHOW DATABASES;'
方法2:
mysql -uroot -pwestos -e 'CREATE DATABASE westos;'
mysql -uroot -pwestos westos < /mnt/westos.sql
实验:
(1)模拟实验环境
##删除westos数据库
[root@localhost ~]# mysqldump -uroot -pwestos westos > /mnt/westos.sql
[root@localhost ~]# mysql -uroot -pwestos -e 'SHOW DATABASES;'
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
+--------------------+
(2)解决方案
方法1:
##直接恢复会报错
[root@localhost ~]# mysql -uroot -pwestos westos < /mnt/westos.sql
ERROR 1049 (42000): Unknown database 'westos'
##1.编写文件:创建数据库并进入数据库
[root@localhost ~]# vim /mnt/westos.sql
###################
CREATE DATABASE westos;
USE westos;
##2.恢复数据
[root@localhost ~]# mysql -uroot -pwestos < /mnt/westos.sql
##查看系统中存在的所有数据库
[root@localhost ~]# mysql -uroot -pwestos -e 'SHOW DATABASES;'
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| westos |
+--------------------+
方法2:
##先还原环境
[root@localhost ~]# vim /mnt/westos.sql
###################
18 /*CREATE DATABASE westos;
19 /*USE westos;
[root@localhost ~]# mysql -uroot -pwestos -e 'SHOW DATABASES;'
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| westos |
+--------------------+
##删除westos数据库
[root@localhost ~]# mysql -uroot -pwestos -e 'DROP DATABASE westos;'
##1.创建数据库
[root@localhost ~]# mysql -uroot -pwestos -e 'CREATE DATABASE westos;'
##2.恢复数据
[root@localhost ~]# mysql -uroot -pwestos westos < /mnt/westos.sql
[root@localhost ~]# mysql -uroot -pwestos -e 'SHOW DATABASES;'
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| westos |
+--------------------+
5.若忘记数据库超级用户密码,怎么办?
(1)关闭数据库服务
[root@localhost ~]# systemctl stop mariadb
(2)跳过授权表
## &表示打入后台
[root@localhost ~]# mysqld_safe --skip-grant-tables &
[1] 6128
[root@localhost ~]# 181126 19:42:21 mysqld_safe Logging to '/var/log/mariadb/mariadb.log'.
181126 19:42:21 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
^C ## Ctrl+c 退出
(3)登陆数据库,并更改数据库root用户密码
##此时便可以免密码登陆数据库
[root@localhost ~]# mysql
##更改数据库root用户密码
MariaDB [(none)]> update mysql.user set Password=password('linux') WHERE User='root';
(4)结束与mysql有关的所有进程
[root@localhost ~]# ps aux | grep mysql
root 6128 0.0 0.1 113252 1616 pts/0 S 19:42 0:00 /bin/sh /usr/bin/mysqld_safe --skip-grant-tables
mysql 6283 0.0 8.6 909068 87592 pts/0 Sl 19:42 0:00 /usr/libexec/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib64/mysql/plugin --user=mysql --skip-grant-tables --log-error=/var/log/mariadb/mariadb.log --pid-file=/var/run/mariadb/mariadb.pid --socket=/var/lib/mysql/mysql.sock
root 6358 0.0 0.0 112644 952 pts/0 R+ 19:48 0:00 grep --color=auto mysql
[root@localhost ~]# kill -9 6128
[root@localhost ~]# kill -9 6283
[1]+ Killed mysqld_safe --skip-grant-tables
[root@localhost ~]# ps aux | grep mysql
root 6368 0.0 0.0 112644 956 pts/0 R+ 19:49 0:00 grep --color=auto mysql
(5)打开数据库
[root@localhost ~]# systemctl start mariadb
测试:
[root@localhost ~]# mysql -uroot -plinux