原子性:要么都成功,要么都失败
一致性:加起来总是13000
持久性:只要变化就要提交
隔离性:两个进程操作同一个进程需要隔离开
########数据库:########
GPL通用公共许可证 General Public License
GNU=GNU is Not Unix(unix收费)minix=linux
oracle数据库 慢查询 读写锁 避免数据不统一
oracle mysql pgsql db2 SQLserver 关系型数据库 mongodb key-value 中间档
redis memacache 内存型数据库 例如淘宝主页 基本不变 用户访问速度也快 非关系型数据库
学习目标:
安装Mariadb数据库
配置和管理数据库
配置数据库用户和访问权限
备份和恢复数据库
##安装数据库服务##
1.配置静态ip,更改名字
2.yum源还是老师的7.0版本
yum search mariadb
yum install -y mariadb-server 服务端
systemctl start mariadb
systemctl status mariadb
cd /var/lib/mysql
ls ##查看数据库目录
ll ##查看权限
cd
systemctl enable mariadb
数据库其实就是该目录的子目录
不要使用字符区分数据库 就是大小写
mysql ###直接登陆进入数据库
查看数据库有哪些库-->SHOW DATABASES;-->规范用大写
quit退出数据库
netstat -antulpe | grep mysql 查看数据库接口
0.0.0.0:3306端口,表示开启所有用户的3306端口都可以访问,为了数据库的安全,接口应该只会在服务内部开启 ,需要把对外的接口关闭。
数据库主配置文件vim /etc/my.cnf
:把对外的3306端口关闭
【mysqld】
skip-networking=1 只对内部开启
重启服务
netstat -antulpe | grep mysql 就看不见端口了
数据库开启前配置:
mysql_secure_installation #安全初始化
set root password?y 是否重置密码,直接回车就是默认选y
设置数据库初始化密码,移除匿名用户,远程禁止root登陆,
删除测试库并访问他 现在重新加载权限访问表
再次直接进出会显示错误
第一种是密码明文登陆
第二种是输入密码(不显示密码)登陆
没有test数据库了 只有mysql库记录用户信息
USE mysql (none)相当于切换目录到mysql数据库下
plugin插件
########mariadb######
yum install -y mariadb-server
systemctl start mariadb
systemctl enable mariadb
systemctl status mariadb
vim /etc/my.cnf
【mysqld】
skip-networking=1
mysql_secure_installation #安全初始化
数据库基本管理
数据库中的命令都是以;结尾ie
(1)mysql -uroot -predhat ##数据库登陆
数据库的查看:SHOW DATABASES;
mysql -uroot -predhat -e "SHOW DATABASES;" 表示直接命令查看数据库
(2)表查看:USE mysql; ##进入数据库,mysql库记录用户信息,有那些用户
SHOW TABLES; 查看数据库中的表格
(3)表内容查看 :SELECT * FROM user; ##user就是SHOW TABLES里面的一个用户
(1)mysql -uroot -predhat ##数据库登陆
显示数据库:SHOW DATABASES;
mysql -uroot -predhat -e “SHOW DATABASES;” 表示直接命令查看数据库
(2)表查看:USE mysql; ##进入数据库,mysql库记录用户信息,有那些用户
SHOW TABLES; 查看数据库中的表格
(3)表内容查看 :SELECT * FROM user; ##user就是SHOW TABLES里面的一个用户
##查询######
查看表结构:DESC user;
针对字段搜索:SELECT Host,User,Select_priv FROM user;##查询Host,User,Select_priv信息
增加条件:SELECT Host,User,Select_priv FROM user WHERE Host='localhost';
查看表结构:DESC user;
针对字段搜索:SELECT Host,User,Select_priv FROM user;##在user表中查询Host,User,Select_priv信息
增加条件:SELECT Host,User,Select_priv FROM user WHERE Host=‘localhost’;
新建数据库
CREATE DATABASE westos; 建立库
SHOW TABLES;
CREATE TABLE linux( ##新建linux表格
-> username varchar(10) not null, (逗号表示命令没有完,分号表示结束)(建立username字段,字符串长度不能超过
-> password varchar(30) not null ##建立password字段,字符串长度不能超过30
-> );
DESC linux; ##查看linux表格结构
INSERT INTO linux values('wsp','123') 添加用户信息, 添加用户信息,在linux表格中插入hello和123,分别属于username和password字段。
SELECT * FROM linux; ##查看表格内容
SELECT username,passwd FROM linux;
CREATE DATABASE westos; 建立库
SHOW TABLES; 建立表
CREATE TABLE linux( ##新建linux表格
-> username varchar(10) not null, (逗号表示命令没有完,分号表示结束)
-> password varchar(30) not null
-> );
DESC linux; 查看表格的结构
INSERT INTO linux values(‘wsp’,‘123’)
SELECT * FROM linux;
SELECT username,passwd FROM linux;
更改
ALTER TABLE linux ADD class varchar(10); 添加字段
DESC linux;
ALTER TABLE linux ADD age varchar(4) AFTER password; ##在linux表格中添加age字段,age字段不超过4,插入在password字段后
DESC linux;
ALTER TABLE linux DROP age; ##移除age字段
ALTER TABLE linux RENAME user; ##重命名表
SELECT * FROM user;
UPDATE user SET class='linux' WHERE username='wsp' AND password='123'; ##更新值,更新username='wsp' AND password='123对应的class的值为linux
SELECT * FROM user;
插入一组值
INSERT INTO user VALUES ('wsp1','456','python');
SELECT * FROM user;
ALTER TABLE linux ADD class varchar(10);
添加字段,默认在最后一行
DESC linux;
ALTER TABLE linux ADD age varchar(4) AFTER password;
##添加字段在password后
DESC linux;
ALTER TABLE linux DROP age; 移除age字段
ALTER TABLE linux RENAME user; ##重命名表
SELECT * FROM user;
插入一组值
INSERT INTO user VALUES ('wsp1','456','python');
SELECT * FROM user;
UPDATE user SET class='linux' WHERE username='wsp' AND password='123'; ##更新值
SELECT * FROM user;
更改password密码字符串长度为20,默认密码可以为空,第二个password表示密文
密码不可以为空
######删除##
DELETE FROM user WHERE username='wsp'; ##删除username=wsp所在的行
SELECT * FROM user;
SHOW TABLES;
DROP TABLE user; ##删除user表格
SHOW TABLES;
DROP DATABASE westos; ##删除westos数据库
SHOW DATABASES;
大写S 两个大写的Z保存退出
DELETE FROM user WHERE username=‘wsp’;
##删除username=wsp所在的行
SELECT * FROM user;
SHOW TABLES;
DROP TABLE user; ##删除user表格
SHOW TABLES;
DROP DATABASE westos; ##删除westos数据库
SHOW DATABASES;
大写S 两个大写的Z保存退出
##用户授权#####
CREATE USER westos@localhost identified by 'wsp'; ##创建用户,westos@localhost为本地用户,@%为远程用户,在mysql数据库中的user表中可以查到用户信息
GRANT SELECT ON userdata.* TO westos@localhost; 用户授权grant,(westos@localhost用户可以再userdata数据库中执行查看权限)
FLUSH PRIVILEGES; ##重载授权表
show garnts for westos@localhost ;查看用户权限
方法2
GRANT SELECT ON userdata.* TO westos@localhost IDENTIFIED BY 'wsp';##创建用户密码为wsp,权限为SELECT查看权限
REVOKE SELECT ON userdata.* FROM westos@localhost ##权限撤销revoke,回收查看权限
CREATE USER westos@localhost identified by ‘wsp’;
##创建用户,westos@localhost为本地用户,通过密码wsp可以登陆数据库。。@%为远程用户,在mysql数据库中的user表中可以查到用户信息
可以在另外一个shell用westos身份登陆数据库
GRANT SELECT ON userdata.* TO westos@localhost; 用户授权grant,(westos@localhost用户可以再userdata数据库中执行查看权限)
FLUSH PRIVILEGES; ##重载授权表
show garnts for westos@localhost ;查看用户权限
当前已经有SELECT查看权限
测试:
第一次无法看见数据库,第二次加权限之后可以看见数据库userdata
加入插入权限
查看userdata下的usertab表的内容
用户删除
也 可以
select Host,User,Password from mysql.user比较形象
方法2
GRANT SELECT INSERT ON userdata.* TO westos@localhost IDENTIFIED BY 'wsp';##创建用户密码为wsp,权限为SELECT查看权限,INSERT插入权限。
REVOKE SELECT ON userdata.* FROM westos@localhost ##权限撤销revoke,回收查看权限
撤销插入权限
测试:
具有查看权限,并切换到userdata数据库
可以看到禁止插入
########数据库备份与恢复:#########
mysqldump
mysqldump -uroot -predhat --all-data ##所有的数据库资料备份
mysqldump -uroot -predhat --all-data --no-data ##只备份数据结构,不备份数据部分
mysqldump -uroot -predhat userdata > /mnt/userdata.sql ##指定userdata数据库的备份
mysql -uroot -predhat -e "DROP DATABASE userdata;"
mysql -uroot -predhat -e "SHOW DATABASES;"
##恢复方式1:
[root@localhost ~]# mysql -uroot -predhat < /mnt/userdata.sql
ERROR 1046 (3D000) at line 22: No database selected
vim /mnt/userdata.sql
21 CREATE DATABASE userdata;
22 USE userdata;
mysql -uroot -predhat
SHOW DATABASES;
SELECT * FROM userdata.usertab;
##恢复方式2:
mysql -uroot -predhat -e "DROP DATABASE userdata;"
mysql -uroot -predhat -e "CREATE DATABASE userdata;"
vim /mnt/userdata.sql
##删除21,22行
mysql -uroot -predhat userdata < /mnt/userdata.sql ##指定导入到userdata库
mysqldump -uroot -predhat --all-data ##所有的数据库资料备份
mysqldump -uroot -predhat --all-data --no-data ##只备份数据结构,不备份数据部分
mysqldump -uroot -predhat userdata > /mnt/userdata.sql ##指定userdata数据库的备份
可以看到userdata的信息
备份之后将userdata删除
mysql -uroot -predhat -e "DROP DATABASE userdata;"
mysql -uroot -predhat -e "SHOW DATABASES;"
##恢复方式1:修改备份文件
[root@localhost ~]# mysql -uroot -predhat < /mnt/userdata.sql
ERROR 1046 (3D000) at line 22: No database selected
显示没有数据库被选择,因此我们需要创建一个数据库,使备份的内容导入该数据库
21行创建数据库userdata
我们创建了数据库还需要在配置文件里使用它
vim /mnt/userdata.sql
21 CREATE DATABASE userdata;
22 USE userdata;
再次导入的时候提示已经存在数据库,但是数据库并没有内容,因此删除该数据库,重新导入新的数据库信息,新的数据库userdata创建成功。
mysql -uroot -predhat
SHOW DATABASES;
SELECT * FROM userdata.usertab;
##恢复方式2:导入备份文件
mysql -uroot -predhat -e “DROP DATABASE userdata;”
mysql -uroot -predhat -e “CREATE DATABASE userdata;”
vim /mnt/userdata.sql
##删除21,22行
用命令创建一个数据库
删除21,22行第一次编写的内容
mysql -uroot -predhat userdata < /mnt/userdata.sql ##指定导入到userdata库
恢复:
##密码更改和破解##
mysqladmin -uroot -predhat password westos
#超户密码忘记###
关闭数据库服务,跳过认证系统,进入数据库进行修改密码操作
systemctl stop mariadb
mysqld_safe --skip-grant-tables &
mysql
UPDATE mysql.user SET Password='redhat' WHERE User='root'; ##密码是明文
UPDATE mysql.user SET Password=password('redhat') WHERE User='root'; ##密码是密文
修改完毕退出数据库,关闭和数据库有关的所有进程,重启服务,用新密码登陆数据库。
ps aux | grep mysql
kill -9 mysql进程
systemctl start mariadb
mysql -uroot -predhat
##密码更改和破解##
mysqladmin -uroot -predhat password westos
将密码redhat更改为westos
######超户密码忘记###
systemctl stop mariadb
mysqld_safe --skip-grant-tables &
mysql
UPDATE mysql.user SET Password='redhat' WHERE User='root'; ##密码是明文
明文修改密码为redhat
UPDATE mysql.user SET Password=password('redhat') WHERE User='root';##加密字符修改密码方式
修改完毕退出数据库,关闭和数据库有关的所有进程,重启服务,用新密码登陆数据库。
ps aux | grep mysql
kill -9 mysql进程
systemctl start mariadb
mysql -uroot -predhat
#######phpMyAdmin###########
在网页中创建数据库
yum install -y httpd
firewall-cmd --permanent --add-service=http
firewall-cmd --reload
下载压缩包
tar zxf phpMyAdmin-4.0.10.20-all-lanuages.tar.gz -C /var/www/html/ ##解压,使网页可以进入数据库图形界面
mv phpMyAdmin-4.0.10.20-all-lanuages phpMyAdmin ##重命名
yum install -y php ##php语言,给阿帕奇的
systemctl restart httpd
下载软件包
yum install -y php-mysql php-mbstring-5.4.16-21.el7.x86_64.rpm
systemctl restart httpd
浏览器访问:http://172.25.254.100/phpMyAdmin 把数据库解读为php支持的
root -->redhat
yum install -y httpd
firewall-cmd --permanent --add-service=http
firewall-cmd --reload
下载压缩包
tar zxf phpMyAdmin-4.0.10.20-all-lanuages.tar.gz -C /var/www/html/ ##解压
mv phpMyAdmin-4.0.10.20-all-lanuages phpMyAdmin ##重命名
yum install -y php
systemctl restart httpd
下载软件包
yum install -y php-mysql php-mbstring-5.4.16-21.el7.x86_64.rpm
systemctl restart httpd
浏览器访问:http://172.25.254.100/phpMyAdmin
root -->redhat
可以在网页中搜索pkgs下载各种需要的软件包
一个表只能有一个主键 可以有多个唯一键
索引:
树状适合范围查找
找到年龄段列 拿出来 排序 然后找大于18的
然后到源表中找对应的名字即可
hash只适合精确值查找
查看支持的引擎
如果服务器在本机
进程直接共享内存
即本机套接字访问
都监听套接字文件 /var/lib/mysql/mysql.sock
Linux打开一个文件来监听
专门用于套接字 unix sock通信的
mysqld 是服务器端的
-e sql语句 -D指明数据库
相当于ctrl +c 别加;号
shell命令
在MySQL中执行
所以脚本mysql用户需要有权限
char空间立即分配
varchar根据数据量不同占用的空间 但是不知道他总共有多少空间
set就是集合 只能选择集合中的数据
enum就是枚举 只能选男或者女 其他的不可以 但是存储时索引方式 0 1
help alter databases;就可以查看帮助怎么写
表创建
查看表属性
只显示某一张表
修改表
change modify区别
change就是更改名字和后面的定义
如果不改名字 只改定义 就使用modify
表示创建索引 索引的名字还不是唯一的 MUL
创建和别的表结构一样的表
复制别人表数据
但是定义还需要自己定义
索引不可以修改 只能修改和删除
DML
显示时候的别名
不区分大小写
RLIKE正则匹配
排序
条件前面加not表示取反
表示删除年龄降序前100个人 也就是年纪最大的100位
也记得加where!!!!!!!
更新数据 不加where全部都改了
tom账号只能从@后面的主机地址登录服务器
用户一定是Mysql服务器的用户
而且mysql会反解这个主机名 所以需要跳过名称解析
普通用户看数据库需要授权
继续给该用户一个表的权限
客户端连接只能看到有一个表
回收权限:
也可以直接查询自己拥有的权限
从67主机也可以看指定用户的权限
可以查看当前用户
node2
1.
添加一条
注意-e使用单引号 value里面的就要双引号
-e双引号 里面就要双引号
这样子就随机了