运维中的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源,具体配置参考前面的博客)
yum install mariadb-server -y##安装
systemctl start mariadb##启动服务
netstat -antlupe | grep mysql ##查看接口
vim /etc/my.cnf ##在配置文件里关闭接口
skip-networking=1##关闭数据库开启的网络接口
systemctl restart mariadb.service ##重启服务
安全初始化:设置超级管理员密码
mysql_secure_installation ##安全初始化插件,修改密码
过程及解释如下
systemctl start mariadb ##重启服务
数据库登陆:
mysql -uroot -p##输入密码即可登陆成功,大小写通用
当然也可以使用在如下方式登陆:——此方法在企业中尽量不要用,毕竟明文密码存在从历史命令中查看得到的风险;如果你的上级知道你有这样的操作,估计就凉了
mysql -u root -p123##在【-p】后紧跟密码也能成功登陆
登陆后操作命令一般用大写字母,命令后用【;】结尾
3.数据库的基本sql语句操作
1)登陆
mysql -uroot -pwestos###-u表示指定登陆用户,-p 表示指定此用户密码
2)查询
SHOW DATABASES;##显示数据库
USE mysql;##进入mysql库
SHOW tables;##显示当前库中表的名称
SELECT * from user;##查询user表中的所有内容(*可以用此表中的任何字段来代替)
DESC user;##查询user表的结构(显示所有字段的名称)
quit##退出
3)新建
CREATE DATABASE westos; ##建立库
USE westos;##进入库
CREATE TABLE linux ( ##建立表linux
->username varchar(10) not null,
->password varchar(20) not null);
SHOW TABLES;##查看表,存在一个名为linux的表
DESC linux; ##查看表结构
插入数据到表中
INSERT INTO linux VALUES ('hello','world');##插入数据到linux表中
INSERT INTO linux VALUES ('snow','come');
SELECT * FROM linux;##查询在linux表中所有字段
SELECT username FROM linux;##查询在linux表中指定字段
4)更改数据库信息
<1>更改数据库名称——一般不要改变数据库的名称,否则存在数据丢失的风险;下面介绍的方法理论上存在,但是慎用
cd /var/kib
<2>更新表信息
UPDATE linux SET password=password('123') where username=hello;
UPDATE linux SET password='321' where username='snow';##更新密码时,前面不加【password】密码明文显示
DELETE FROM linux where username='hello';##删除
INSERT INTO linux VALUES ('student','456');##添加(插入)数据到linux表中
<3>更改表中字段
ALTER TABLE linux ADD class varchar(20); ##插入新的字段
UPDATE linux SET class='123' where username='snow'; ##更新字段内信息
ALTER TABLE linux DROP class; ##删除class
ALTER TABLE linux ADD class varchar(20) AFTER username; ##指定插入字段的位置,默认加在最后
注意:插入时只能在第一个字段之后的位置选择,不能在其之前;默认第一个是基准字段,默认不能修改,修改后会导致数据错乱
<4>更改数据库中表的名称
ALTER TABLE linux RENAME redhat; ##更改表名称
5)数据库的备份
mysqldump -uroot -p westos > /mnt/westos.sql ##备份westos库并把数据保存到westos.sql中
mysqldump -u root -p --all-database> /mnt/all.sql##备份所有库
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 -uroot -ptext < /mnt/westos.sql##把数据导入westos库
导入前数据未空
导入后
6)数据库的删除——高危动作,用前三思
DROP TABLE redhat;##删除redhat表
DROP DATABASE text;##删除text库
4.用户授权
1)登陆授权
SELECT USER FROM mysql.user; ##查看本机数据库用户列表
CREATE USER student@'localhost' identified by '111'; ##建立本地用户,student@'%'则用户可在其他主机远程登陆
注意:
student@localhost ##只能在本机登录
student@'%' ##任意主机登录
2)数据库内相关授权
student用户进入数据库后无法获取数据库的全部信息,如下图;此时我们便需要给用户授权
用root用户登陆
GRANT insert,update,delete,select on westos.* TO student@localhost; ##给用户关于库的相关权限
SHOW GRANTS FOR student@localhost; ##显示用户权限列表
测试:
REVOKE insert,update,delete,select to westos.* FROM student@localhost;##取消用户权限
DROP USER student@localhost;##删除用户
FLUSH PRIVILEGES; ##刷新
5.数据库密码相关设置
1)知道原密码的情况下修改密码
mysqladmin -uroot -p123 password 321##修该超级用户密码
2)不知道原密码的情况下修改密码
systemctl stop mariadb ##停止服务
mysqld_safe --skip-grant-tables & ##开启mysql登陆接口并忽略授权表
mysql##直接不用密码可以登陆
UPDATE mysql.user SET password=password('123456789') WHERE user='root';##更新超级用户密码信息
ps aux | grep mysql##过滤mysql的所有进程并结束这些进程
kill -9 mysqlpid
systemctl start mariadb ##打开服务
mysql -u root -p ##用新密码登陆