运维中的MySQL数据库管理方式

1.几种主流数据库类型简介

数据库种类大体分为:关系型数据库和非关系型数据库。
关系型数据库模型是把复杂的数据结构归结为简单的二元关系(即二维表格形式)。在关系型数据库中,对数据的操作几乎全部建立在一个或多个关系表格上,通过对这些关联的表格分类、合并、连接或选取等运算来实现数据库的管理。
典型产品:Mysql、Oracle、DB2、Sqlserver

1).IBM的DB2
DB2是IBM出口的一系列关系型数据库管理系统,分别在不同的操作系统平台上服务。虽然DB2产品是基于UNIX的系统和个人计算机操作系统,在基于UNIX系统和微软在windows系统下的Access方面,DB2追寻了ORACLE的数据库产品。
IBM公司研制的一种关系型数据库系统。DB2主要应用于大型应用系统,具有较好的可伸缩性,可支持从大型机到单用户环境,应用于OS/2、Windows等平台下。 DB2提供了高层次的数据利用性、完整性、安全性、可恢复性,以及小规模到大规模应用程序的执行能力,具有与平台无关的基本功能和SQL命令。DB2采用了数据分级技术,能够使大型机数据很方便地下载到LAN数据库服务器,使得客户机/服务器用户和基于LAN的应用程序可以访问大型机数据,并使数据库本地化及远程连接透明化。 它以拥有一个非常完备的查询优化器而著称,其外部连接改善了查询性能,并支持多任务并行查询。 DB2具有很好的网络支持能力,每个子系统可以连接十几万个分布式用户,可同时激活上千个活动线程,对大型分布式应用系统尤为适用。

2). Oracle
Oracle Database,又名Oracle RDBMS,或简称Oracle。是甲骨文公司的一款关系数据库管理系统。到目前仍在数据库市场上占有主要份额。劳伦斯·埃里森和他的朋友,之前的同事Bob Miner和Ed Oates在1977年建立了软件开发实验室咨询公司(SDL,Software Development Laboratories)
oracle数据库是一种大型数据库系统,一般应用于商业,政府部门,它的功能很强大,能够处理大批量的数据,在网络方面也用的非常多。不过,一般的中小型企业都比较喜欢用mysql, SQL server等数据库系统,它的操作很简单,功能也非常齐全。只是比较oracle数据库而言,在处理大量数据方面有些不足

3). Sql server
SQL Server 是一个关系数据库管理系统。它最初是由Microsoft、 Sybase 和Ashton-Tate三家公司共同开发的,于1988 年推出了第一个OS/2 版本。在Windows NT 推出后,Microsoft与Sybase 在SQL Server 的开发上就分道扬镳了,Microsoft 将SQL Server 移植到Windows NT系统上,专注于开发推广SQL Server 的Windows NT 版本。Sybase 则较专注于SQL Server在UNIX 操作系统上的应用

4). mySQL
MySQL是一个小型关系型数据库管理系统,开发者为瑞典MySQL AB公司。在2008年1月16号被Sun公司收购。而2009年,SUN又被Oracle收购.对于Mysql的前途,没有任何人抱乐观的态度,目前MySQL被广泛地应用在Internet上的中小型网站中。由于其体积孝速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库。

2.MySQL数据库安装及安全初始化

yum search mariadb  ##搜索安装包(需要yum源,具体配置参考前面的博客)

运维中的MySQL数据库管理方式

yum install mariadb-server -y##安装
systemctl start mariadb##启动服务

运维中的MySQL数据库管理方式

netstat -antlupe | grep mysql         ##查看接口

运维中的MySQL数据库管理方式

vim /etc/my.cnf          ##在配置文件里关闭接口
skip-networking=1##关闭数据库开启的网络接口
systemctl restart mariadb.service ##重启服务

运维中的MySQL数据库管理方式
运维中的MySQL数据库管理方式

安全初始化:设置超级管理员密码

mysql_secure_installation            ##安全初始化插件,修改密码

过程及解释如下
运维中的MySQL数据库管理方式
运维中的MySQL数据库管理方式

systemctl start mariadb ##重启服务

数据库登陆:

mysql -uroot -p##输入密码即可登陆成功,大小写通用

运维中的MySQL数据库管理方式
当然也可以使用在如下方式登陆:——此方法在企业中尽量不要用,毕竟明文密码存在从历史命令中查看得到的风险;如果你的上级知道你有这样的操作,估计就凉了

mysql -u root -p123##在【-p】后紧跟密码也能成功登陆

运维中的MySQL数据库管理方式
登陆后操作命令一般用大写字母,命令后用【;】结尾

3.数据库的基本sql语句操作

1)登陆

mysql -uroot -pwestos###-u表示指定登陆用户,-p 表示指定此用户密码

2)查询

SHOW DATABASES;##显示数据库

运维中的MySQL数据库管理方式

USE mysql;##进入mysql库

运维中的MySQL数据库管理方式

SHOW tables;##显示当前库中表的名称

运维中的MySQL数据库管理方式

SELECT * from user;##查询user表中的所有内容(*可以用此表中的任何字段来代替)

运维中的MySQL数据库管理方式

DESC user;##查询user表的结构(显示所有字段的名称)

运维中的MySQL数据库管理方式

quit##退出

3)新建

CREATE DATABASE westos; ##建立库

运维中的MySQL数据库管理方式

USE westos;##进入库
CREATE TABLE linux (       ##建立表linux
->username varchar(10) not null,
->password varchar(20) not null);

运维中的MySQL数据库管理方式

SHOW TABLES;##查看表,存在一个名为linux的表
DESC linux;             ##查看表结构

运维中的MySQL数据库管理方式
插入数据到表中

INSERT INTO linux VALUES ('hello','world');##插入数据到linux表中
INSERT INTO linux VALUES ('snow','come'); 

运维中的MySQL数据库管理方式
SELECT * FROM linux;##查询在linux表中所有字段
SELECT username FROM linux;##查询在linux表中指定字段
运维中的MySQL数据库管理方式

4)更改数据库信息

<1>更改数据库名称——一般不要改变数据库的名称,否则存在数据丢失的风险;下面介绍的方法理论上存在,但是慎用

cd /var/kib

运维中的MySQL数据库管理方式
<2>更新表信息

UPDATE linux SET password=password('123') where username=hello;
UPDATE linux SET password='321' where username='snow';##更新密码时,前面不加【password】密码明文显示

运维中的MySQL数据库管理方式

DELETE FROM linux where username='hello';##删除

运维中的MySQL数据库管理方式

INSERT INTO linux VALUES ('student','456');##添加(插入)数据到linux表中

运维中的MySQL数据库管理方式

<3>更改表中字段

ALTER TABLE linux ADD class varchar(20);           ##插入新的字段
UPDATE linux SET class='123' where username='snow'; ##更新字段内信息

运维中的MySQL数据库管理方式
运维中的MySQL数据库管理方式

ALTER TABLE linux DROP class;                  ##删除class

运维中的MySQL数据库管理方式

ALTER TABLE linux ADD class varchar(20) AFTER username;    ##指定插入字段的位置,默认加在最后

运维中的MySQL数据库管理方式
注意:插入时只能在第一个字段之后的位置选择,不能在其之前;默认第一个是基准字段,默认不能修改,修改后会导致数据错乱

<4>更改数据库中表的名称

ALTER TABLE linux RENAME redhat;              ##更改表名称

运维中的MySQL数据库管理方式

5)数据库的备份

mysqldump -uroot -p westos > /mnt/westos.sql ##备份westos库并把数据保存到westos.sql中

运维中的MySQL数据库管理方式

mysqldump -u root -p --all-database> /mnt/all.sql##备份所有库

运维中的MySQL数据库管理方式

mysqldump -u root -p westos --no-data ##只备份westos库中的框架
mysqldump -uroot -pwestos westos linux > /mnt/linux.sql ##备份westos库中的linux表

mysql -uroot -p -e "create database text;"##建立text库

运维中的MySQL数据库管理方式

mysql -uroot -ptext < /mnt/westos.sql##把数据导入westos库

导入前数据未空
运维中的MySQL数据库管理方式
导入后
运维中的MySQL数据库管理方式

6)数据库的删除——高危动作,用前三思

DROP TABLE redhat;##删除redhat表

运维中的MySQL数据库管理方式

DROP DATABASE text;##删除text库

运维中的MySQL数据库管理方式

4.用户授权

1)登陆授权

SELECT USER FROM mysql.user; ##查看本机数据库用户列表

运维中的MySQL数据库管理方式

CREATE USER student@'localhost' identified by '111';   ##建立本地用户,student@'%'则用户可在其他主机远程登陆

运维中的MySQL数据库管理方式
注意:

student@localhost ##只能在本机登录
student@'%' ##任意主机登录

2)数据库内相关授权

student用户进入数据库后无法获取数据库的全部信息,如下图;此时我们便需要给用户授权

运维中的MySQL数据库管理方式
用root用户登陆

GRANT insert,update,delete,select on westos.* TO student@localhost;   ##给用户关于库的相关权限
SHOW GRANTS FOR student@localhost;              ##显示用户权限列表

运维中的MySQL数据库管理方式
测试:
运维中的MySQL数据库管理方式

REVOKE insert,update,delete,select to westos.* FROM student@localhost;##取消用户权限

运维中的MySQL数据库管理方式

DROP USER student@localhost;##删除用户
FLUSH PRIVILEGES; ##刷新

运维中的MySQL数据库管理方式

5.数据库密码相关设置

1)知道原密码的情况下修改密码

mysqladmin -uroot -p123 password 321##修该超级用户密码

运维中的MySQL数据库管理方式
2)不知道原密码的情况下修改密码

systemctl stop mariadb            ##停止服务
mysqld_safe --skip-grant-tables &      ##开启mysql登陆接口并忽略授权表
mysql##直接不用密码可以登陆

运维中的MySQL数据库管理方式

UPDATE mysql.user SET password=password('123456789') WHERE user='root';##更新超级用户密码信息

运维中的MySQL数据库管理方式

ps aux | grep mysql##过滤mysql的所有进程并结束这些进程
kill -9 mysqlpid

运维中的MySQL数据库管理方式

systemctl start mariadb ##打开服务
mysql -u root -p ##用新密码登陆

运维中的MySQL数据库管理方式