MySQL数据库
MySQL是一种开放源代码的关系型数据库管理系统(RDBMS),使用最常用的数据库管理语言–结构化查询语言(SQL)进行数据库管理。
MySQL是开放源代码的,因此任何人都可以在General Public License的许可下下载并根据个性化的需要对其进行修改。
MySQL因为其速度、可靠性和适应性而备受关注。大多数人都认为在不需要事务化处理的情况下,MySQL是管理内容最好的选择
MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可
MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品。
本次我们主要学习mysql数据库的一些基础内容:数据添加,增删改查,授权管理,图形化管理等内容。从基础方面,了解mysql数据库的使用方法。
【环境搭建:】
在server主机上,reset重置环境后:
》1.更改主机名称为:mysql.server.com
》2.设置网络
》3.搭建yum仓库,挂载好yum源
》4.真机ssh连接虚拟机,直接真机上进行远程连接操作
单 独 的 一 份 数 据 为 一 个 t a b , 多 个 t a b 为 库 , 多 个 库 为 软 件 \color{blue}{单独的一份数据为一个tab,多个tab为库,多个库为软件} 单独的一份数据为一个tab,多个tab为库,多个库为软件
【mariadb服务安装:提供mysql数据库】
yum search mariadb
yum install mariadb-server.x86_64
systemctl start mariadb
【开启服务时,卡住的话需要在另一个shell中,或者无图形界面输入任意字符。原因是加密字符长度不够】
【常规化安全设置:】
此时我们其实已经可以使用mysql数据库了,但是没有任何安全设置的mysql数据库,可以直接通过指令mysql
登陆。很不安全。所以要进行安全设置:
mysql_secure_installation
现在我们就不可以直接通过mysql指令,匿名,无密码进行登陆数据库了。
安全设置上,我们使用netstat -antlupe | grep mysql
去查看mysql接口状态,会发现是有接口的,那么就有可能会被网络连接,造成数据库被访问。所以我们还要去除网络接口。
vim /etc/my.cnf ###编辑mysqld配置文件
skip-networking=1 ###写在mysql中【不是写在mysql_safe】
在
正
式
的
使
用
m
y
s
q
l
数
据
库
前
我
们
要
做
的
就
是
以
上
的
两
方
面
安
全
设
定
。
下
面
进
入
m
y
s
q
l
使
用
\color{blue}{在正式的使用mysql数据库前我们要做的就是以上的两方面安全设定。下面进入mysql使用}
在正式的使用mysql数据库前我们要做的就是以上的两方面安全设定。下面进入mysql使用
提
前
说
明
,
在
m
y
s
q
l
数
据
库
中
其
实
是
不
区
分
大
小
写
的
,
不
过
为
了
正
规
,
我
们
都
是
用
大
写
。
\color{blue}{提前说明,在mysql数据库中其实是不区分大小写的,不过为了正规,我们都是用大写。}
提前说明,在mysql数据库中其实是不区分大小写的,不过为了正规,我们都是用大写。
mysql -uroot -p ###登陆
SHOW DATABASES; ###查看数据库
USE mysql; ###进入数据库
SHOW TABLES; ###查看数据库中的内容【有哪些表】
SELECT * FROM user; ###查看user这个表;一列为一个字段
SELECT * FROM 表.
SELECT Host FROM user; ###查询Host字段
SELECT Host,User FROM user; ###查询Host,User两个字段
SELECT Host,User,Password FROM user WHERE User="root"; ###查询行
查询:
我们使用 * 来代表所有字段,即所有列。当要查询行时,需要使用WHERE进行匹配查询。
建立:
CREATE DATABASE xyy; ###创建库
USE xyy; ###进入库
CREATE TABLE userlist(
username VARCHAR(50) NOT NULL, ###名字长度50个字符以内,不为空
password VARCHAR(100) NOT NULL ###密码长度为100个字符以内,不为空
); ###字段之间用逗号","隔开
SHOW TABLES; ###查看有哪些表
DESC userlist; ###查看表结构
SELECT * FROM userlist; ###查看表内容
INSERT INTO userlist VALUES ("abc","123"); ###给表中写内容
SELECT * FROM userlist; ###查看表内容
SELECT * FROM xyy.userlist ##查看westos库中的userlist表
varchar 可变长数据类型
varchar(5) 长度为1-5都可以
char 定长数据类型
char(5) 长度必须为5,不为5,后续空格补齐
更改:
DROP TABLE userlist1; ###删除表
ALTER TABLE userlist RENAME user_list; ###给userlist这个表重命名为user_list
ALTER TABLE userlist ADD age VARCHAR(5); ###给表最后一列添加age这一列
ALTER TABLE userlist DROP age; ###删除userlist表中age这一列 ;【当表中只有1列时,不能删除这一列,需要直接删除表】
UPDATE userlist SET age="12" WHERE username="lee"; 更改数据,只更改符合username="lee"的这一行
库备份/删除:
mysqldump -uroot -p 库名 > /mnt/库名.sql ###采用mysql语句备份,将库备份到mnt下,以库名.sql名字
mysqldump -uroot -p 库名 --no-data ###只备份格式,不备份表中数据
mysqldump -uroot -p --all-database ###备份所有库
mysql -uroot -p westos < /mnt/westos.sql
###会报错,因为我们将westos这个库已经删除。
【解决方法为】vim /mnt/westos.sql
注释后的第一行添加
CREATE DATABASE westos;
USE westos;
然后 mysql -uroot -p < /mnt/westos.sq
或者重新建立库,再执行备份恢复
mysql -uroot -p -e "CREATE DATABASE westos;"
DELETE FROM 表 WHERE username="lee";
DELETE FROM 表 WHERE username=("lee"|"lee1");
删除用户名为这两个的所有行内容
DELETE FROM 表 WHERE username="lee" AND age="12"
删除多个条件指定的内容
DROP DATABASE 库名 ###删除库
用户建立:
CREATE USER westos@'%' identified by'westos';
##用户建立 【%:有远程登陆的权力】【localhost:本地登陆】【by后面跟密码】
vim /etc/my.cnf ###打开端口
systemctl stop firewalld ###关闭火墙
测试远程登陆:
yum whatprovides mysql
yum install mariadb-5.5.52-1.el7.x86_64 ###安装提供数据库的mariadb
mysql -uwestos -h172.25.254.100 -p ###IP为数据库主机的IP ,远程连接
这里直接演示一下远程登陆。本地登陆不做演示了。
用户授权:超户状态授权
SHOW GRANTS FOR westos1@localhost; ###查看westos1@localhost的权力
GRANT SELECT,INSERT ON westos.* TO lee@localhost;
###对westos库中所有表格都给予lee@localhost用户select查看表和insert在表中写内容的权限
REVOKE INSERT ON westos.* FROM lee@localhost;
###移除westos库中所有表lee@localhost用户的写权限
DROP USER westos@localhost ###删除westos@localhost用户
FLUSH PRIVILEGES;刷新数据库
【在测试端没退出时改变权限进行测试,是没有效果的】
########westos@loacal 和 westos@’%’ 是两个用户
密码管理:
**知道密码时:
mysqladmin -uroot -pwestos password lee**
不知道密码时:
systemctl stop mariadb 先关掉mariadb
并把后台mariadb清空
ps -aux | grep mysql
关掉后台mysql和进程中的mysql
mysqld_safe --skip-grant-tables &跳过授权表,没有授权,就可以更改权限
mysql
USE mysql;
SHOW TABLES
SELECT * FROM user;
UPDATE user set Password=password('westos') WHERE User='root';
quit
图形管理mysql:
准备内容:phpMyAdmin 软件 【从老师那考的】
我们用的是phpMyAdmin,所以要安装php
yum install php php-mysql -y
systemctl restart httpd 【没有httpd服务还需要下在http】
tar jxf phpMyAdmin-3.4.0-all-languages > /var/www/html 【解压到var/www/html目录中,可共享】
mv phpMyAdmin-3.4.0-all-languages mysqladmin 【重命名】【可省略】
cd mysqladmin 【进入这个目录】
cp config.sample.inc.php config.inc.php ###把模版复制一个
vim config.inc.php
$cfg【'blowfish_secret'】='ba17c1ec07d65003'
测试:
在浏览器:http://172.25.254.112/mysqladmin
注意selinux 和 火墙的状态,selinux处于enforcing会使http无法访问mysqladmin
通过less Documentation.txt查看说明,会告诉我们在config.inc.php中要写入的内容:
测试:在浏览器访问服务器的/mysqladmin
大大的小小阳