数据库
- 可视为电子化的文件柜——存储电子文件的处所,用户可以对文件中的数据进行新增、截取、更新、删除等操作
- 是以一定方式储存在一起、能与多个用户共享、具有尽可能小的冗余度、与应用程序彼此独立的数据集合
数据库类型
数据库有两种类型,分别是关系型数据库与非关系型数据库
关系型数据库主要有:
Oracle、DB2、Microsoft SQL Server、Microsoft Access、MySQL等等。
非关系型数据库主要有:
NoSql、Cloudant、MongoDb、redis、HBase等等
mySQL (关系型数据库管理系统)
- MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件。
- MySQL是一种关系数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。
- MySQL所使用的 SQL 语言是用于访问数据库的最常用标准化语言。MySQL 软件采用了双授权政策,分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择 MySQL 作为网站数据库。
- 由于其社区版的性能卓越,搭配 PHP 和 Apache 可组成良好的开发环境。
MariaDB
MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可 MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品。在存储引擎方面,使用XtraDB(英语:XtraDB)来代替MySQL的InnoDB。 MariaDB由MySQL的创始人Michael Widenius(英语:Michael Widenius)主导开发,他早前曾以10亿美元的价格,将自己创建的公司MySQL AB卖给了SUN,此后,随着SUN被甲骨文收购,MySQL的所有权也落入Oracle的手中。MariaDB名称来自Michael Widenius的女儿Maria的名字。
安装MariaDB
yum search mariadb
yum install mariadb-server.x86_64 -y
systemctl start mariadb
systemctl enable mariadb
systemctl status mariadb
MariaDB安全初始化
- 数据库起始状态的设定信息是不安全的,任何用户都可以登陆而不需要输密码,所以我们需要作以下设定:
mysql_secure_installation 安全初始化
Enter current password for root (enter for none): 刚下载的mariadb超户是没有密码的,且默认登陆的用户就是超户,所以直接回车
Set root password? [Y/n] 是否为超户设置密码
New password: 输入你设置的密码
Re-enter new password: 再次输入你设置的密码
Remove anonymous users? [Y/n] 是否移走匿名用户
Disallow root login remotely? [Y/n] 不允许超户远程登陆
Remove test database and access to it? [Y/n] 删掉测试的数据库
Reload privilege tables now? [Y/n] 对数据库刷新,让所有的数据同步
设置完成后尝试用密码去登录MariaDB
- 默认情况下,数据库的网络接口是打开的
为了安全需要关闭此接口
- 或者编辑配置文件/etc/my.cnf(vim /etc/my.cnf)写入skip-networking=1关闭网络接口
- 重启服务systemctl restart mariadb,再次查看mysql的端口3306就没有了
数据库的管理
查询
SHOW DATABASES; 查询数据库
USE mysql; 进入mysql数据库
SHOW TABLES; 查询mysql的所有表
SELECT * FROM user; 查询user表里的字段
SELECT Host,User,Password FROM user; 查询user表里Host,User,Password字段
SELECT Host,User,Password FROM user where Host='127.0.0.1';查询user表里Host,User,Password字段对应的行
建立
CREATE DATABASE westos; 创建一个新的的数据库westos
SHOW DATABASES; 查询数据库是否添加成功
CREATE TABLE userlist( 建立表
-> username varchar(50) not null, username数据最长为50个字符,且不能为空
-> password varchar(100) not null password数据最长为100个字符,且不能为空
-> );
DESC userlist; 查看表结构
varchar是可变长字符串,它与char的区别是
1.占据空间不同:char的长度是不可变的,而varchar的长度是可变的;
2、存取速度不同:char的存取数度比varchar要快得多,因为其长度固定,方便程序的存储与查找;
3、存储方式不同:char的存储方式是对英文字符占用1个字节,对汉字占用两个字节,而varchar的存储方式是对每个英文字符占用2个字节,汉字也占用2个字节;
INSERT INTO userlist VALUES ('shen','123'); 插入数据到userlist表中
INSERT INTO userlist VALUES ('shen','456'); 插入数据到userlist表中
SELECT * FROM userlist; 查询所有字段在userlist表中
更改
ALTER TABLE userlist RENAME user_list; 把userlist表名改为user_list
ALTER TABLE user_list RENAME userlist; 把表名再改回来
ALTER TABLE userlist ADD age varchar(5); 向表userlist中增加age列
ALTER TABLE userlist DROP age; 删除表中的age列
ALTER TABLE userlist ADD age varchar(5) AFTER username; 向username后加入age列
UPDATE userlist SET age='12'; 把表中所有的age列的值改为12
UPDATE userlist SET age='15' WHERE username='shen1'; 把表中username是shen1的列的age值改为15
INSERT INTO userlist VALUES('shen1','15','456'); 插入一个新用户shen1
删除
DELETE FROM userlist WHERE username=‘’shen’ 删除表中username是shen的行
DELETE FROM userlist WHERE username=‘’shen’ AND age='12' 删除表中username是shen且age为12的行
DELETE FROM userlist WHERE username=(‘shen’|'shen1'); 删除表中username是shen和shen1的行
DROP TABLE userlist; 删表
DROP DATABASE westos; 删库
用户授权
首先关闭防火墙,取消掉之前修改的配置并开放端口3306,让其他主机可以通过网络登陆数据库
CREATE USER westos@'%' identified by 'westos'; 创建一个用户,密码为westos并且可以在任何地方可以登陆数据库
SELECT User,Host FROM mysql.user;
CREATE USER lee@localhost identified by 'westos'; 创建一个用户名为lee,用户密码为westos的用户,只能在本地登陆数据库
SELECT User,Host FROM mysql.user;
测试:分别在本机用lee用户和其他主机用westos用户测试:
其他主机同样需要安装mariadb,安装完后开启服务systemctl start mariadb.service
这是没有授权的情况:
这是授权之后的情况:
GRANT SELECT,INSERT,DELETE on westos.* TO westos@‘%s’; 授westos库的权利给其他用户
GRANT SELECT,INSERT,DELETE on mysql.* TO westos@‘%s’; 授mysql库的权利给其他用户
SHOW GRANTS FOR westos@‘%s’; 显示其他用户所拥有的权利
数据库系统和文件系统一样,都是需要授权的,此时我们给两个用户都没有赋予权力,所以他们只能登陆,且只能看他能看到部分可见的数据库,我们需要root给他们赋予权力他们才能进行其他增删改查操作。
超级用户一次可以授予多个权力,用逗号,分开就行。
此时用其他用户登陆查看数据库,可以显示mysql和westos两个数据库
FLUSH PRIVILEGES; 刷新
数据库的备份
数据库文件所在目录是/var/lib/mysql
mysqldump -uroot -pwestos westos > /mnt/wesots.sql 将数据库westos备份到/mnt下
mysqldump -uroot -pwestos westos --no-data 将数据库westos备份,不备份数据只备份表的结构
mysqldump -uroot -p --all-databases 备份所有数据库
mysqldump -uroot -p --all-databases --no-data 备份所有数据库的表的结构
恢复方式1:
mysql -uroot -p -e "CREATE DATABASE westos;" 先创建数据库
mysql -uroot -p westos < /mnt/westos.sql 再把备份的导入
恢复方式2:
vim /mnt/westos.sql
在中间写入
CREATE DATABASE westos;
USE westos;
mysql -uroot -p < /mnt/westos.sql
恢复成功!
修改数据库超级用户的密码
知道原密码时
mysqladmin -uroot -pwestos password redhat 将原密码westos改为redhat
mysql -uroot -predhat 用新密码登陆测试
忘记原密码时:
1.首先,关闭数据库服务
systemctl stop mariadb.service
2.开启安全模式,跳过授权表 ,因为会占用终端所以加&打入后台运行。
mysqld_safe --skip-grant-tables &
3.此时任何用户都可以直接输入mysql登陆而不用密码
4.我们输入mysql后,在mysql数据库的user表中修改root的密码
5.结束所有进程,再开启数据库服务systemctl start mariadb.service
此时用mysql不能直接登陆数据库
安装phpmyadmin 数据库图形管理
phpMyAdmin 是一个以PHP为基础,以Web-Base方式架构在网站主机上的MySQL的数据库管理工具,让管理者可用Web接口管理MySQL数据库。借由此Web接口可以成为一个简易方式输入繁杂SQL语法的较佳途径,尤其要处理大量资料的汇入及汇出更为方便。其中一个更大的优势在于由于phpMyAdmin跟其他PHP程式一样在网页服务器上执行,但是您可以在任何地方使用这些程式产生的HTML页面,也就是于远端管理MySQL数据库,方便的建立、修改、删除数据库及资料表。也可借由phpMyAdmin建立常用的php语法,方便编写网页时所需要的sql语法正确性。
首先安装httpd服务,开启服务并设置为开机启动:
yum install httpd -y
systemctl start httpd.service
systemctl enable httpd.service
获得phpmyadmin的压缩包,并把phpmyadmin的安装包在/var/www/html目录下解压,并解包,我们可以重命名为mysqladmin方便在浏览器下访问。
yum install lftp -y
tar jxf phpMyAdmin-3.4.0-all-languages.tar.bz2 解压并解包
mv phpMyAdmin-3.4.0-all-languages/ mysqladmin 重命名
安装php,php-mysql两个包,此时可以通过php -m 命令查看mysql有没有出现,这表示已经运行php加载的模块。
yum search php
yum install php.x86_64 -y
yum install php-mysql.x86_64 -y
php -m
vim Documentation.txt并cp config.sample.inc.php config.inc.php,并将Documentation.txt中139行中的cookie的几个字符ba17c1ec07d65003添加到config.inc.php文件中,重启httpd服务systemctl restart httpd.service
此时,在浏览器中输入172.25.60.100/mysqladmin就可以访问了,建库,建表。在shell端可以检测