十七.Linux下Mysql的基本管理
1.linux中的mariadb:
常见的网页架构:LAMP(linux,Apache,Mysql,perl/python) / LNMP(linux,nginx,Mysql,perl/php);
mariadb为mysql的一个分支;
dnf install mariadb-server.x86_64 -y #mariadb的安装;
mariadb.service ##服务名称;
3306 ##默认端口号;
/etc/my.cnf.d/mariadb-server.cnf ##主配置文件;
/var/lib/mysql ##数据目录,当需要重新安装mariadb时需要清理此目录或备份;
2.mariadb的安全初始化:
2-1:默认情况下,开启mariadb后,可以直接使用mysql命令登录;
初次使用mariadb可以使用 mysql_secure_installation 命令来进行安全初始化:(可以设置密码等;)
2-2:关闭数据库开放端口:
vim /etc/my.cnf.d/mariadb-server.cnf
[mysqld]
skip-networking=1
systemctl restart mariadb
netstat -antlupe | grep mysql #此命令查询不到端口,表示关闭成功
默认情况下,远程端口是开启的,存在很大的安全隐患,需要将其关掉:
3.数据库的基本管理(增删改查):
1.查看
SHOW DATABASES; ##显示库名称
USE mysql; ##进入mysql库
SHOW TABLES; ##显示库中的所有表
SELECT * FROM user; ##查询user表中的所有数据
SELECT Host,User,Password FROM user; ##查询user表中的指定字段
2.新建
CREATE DATABASE westos; ##新建库
CREATE TABLE linux (
username varchar(6) not null,
password varchar(30) not null
); ##新建表
DESC linux; ##显示表结构
INSERT INTO linux VALUES ('user1','123'); #插入数据
FLUSH PRIVILEGES; #刷新数据库
3.更改
ALTER TABLE redhat RENAME linux; #表的重命名
ALTER TABLE linux ADD age varchar(4) AFTER password; #更改表的结构,在password字段后添加age字段
ALTER TABLE linux DROP age; #删除表中的age字段
UPDATE linux SET sex='g' WHERE username='user2'; #更改linux表中,user2 的sex字段的值
4.删除
DELETE from linux where username='user2' and age='18';
DROP TABLE linux;
DROP DATABASE westos;
如图:建立名为heihei的表,并插入相应的信息:
4.数据库的备份:
mysqldump -uroot -p123 --all-database >/mnt/westos.sql #全部备份
mysqldump -uroot -p123 --all-database --no-data >/mnt/westos.sql #只备份表格,不备份数据
mysqldump -uroot -p123 westos >/mnt/westos.sql #备份westos库
mysqldump -uroot -p123 westos > /mnt/westos.sql
恢复方式1:
mysql -uroot -p123 -e "create database westos;"
mysql -uroot -p123 westos < /mnt/westos.sql
恢复方式2:
vim /mnt/westos.sql
CREATE DATABASE westos;
USE westos;
mysql -uroot -p123 < /mnt/westos.sql
5.数据密码管理:
5-1:数据库密码更改:
mysqladmin -uroot -plee password westos
mysqladmin -uroot -p password westos 输入原密码后更改;
5-2:数据库密码破解:
systemctl stop mariadb
mysqld_safe --skip-grant-tables & #跳过授权表
UPDATE mysql.user set authentication_string=password('lee') WHERE User='root'; #更改mysql.user表中的用户认证信息
flush privileges;
ps aux | grep mysql
kill -9 mysql的所有进程
systemctl start mariadb
6.数据库中用户的授权:
CREATE USER lee@localhost identified by 'lee'; ##建立lee用户,只能用localhost登陆(本机使用)
CREATE USER lee@'%' identified by 'lee'; ##建立lee用户,可以通过网络或localhost登陆
GRANT INSERT,SELECT ON westos.* TO lee@localhost; ##使lee用户在westos库中拥有insert,select权力
SHOW GRANTS for lee@localhost; ##查看lee用户的授权信息
REVOKE SELECT ON westos.* FROM lee@localhost; ##收回lee用户在westos库中的select权限;
DROP user lee@localhost; ##删掉lee用户;
7.数据库的web形式搭建(phpmyadmin):
dnf install httpd php php-mysqlnd -y
systemctl enable --now httpd
systemctl stop firewalld
cp phpMyAdmin-3.4.0-all-languages.tar.gz /var/www/html/
cd /var/www/html/
tar zxf phpMyAdmin-3.4.0-all-languages.tar.gz
mv phpMyAdmin-3.4.0-all-languages/ mysqladmin
cd mysqladmin
cp config.sample.inc.php config.inc.php
systemctl restart httpd
firefox http://192.168.0.12/mysqladmin
selinux内核级加强型防火墙的管理:
1.selinux开启后的作用:
对于文件的影响:
当selinux开启时,内核会对每个文件及每个开启的程序进行标签加载
标签内记录程序和文件的安全上下文(context);
对于程序功能的影响:
当selinux开启会对程序的功能加载开关,并设定此开关的状态为关闭
当需要此功能时需要手动开启功能开关
此开关叫做sebool;
系统在开机时 如果读到 /.autorelabel 文件时会重新初始化selinux;
2.Selinux的状态及管理:
selinux的开启
vim /etc/selinux/config
SELINUX=disabled #selinux关闭
SELINUX=enforcing #selinux开机设定为强制状态此状态为selinux开启,强制状态不可继续访问
SELINUX=permissive #selinux开机设定为警告状态此状态为selinux开启,警告状态可以继续访问
"selinux开启或关闭需要重启系统"
enforcing:
不符合条件一定不能被允许,并会收到警告信息
permissive:
不符合条件被允许,并会收到警告信息
selinux状态的查看:
getenforce
selinux开启后强制和警告级别的转换
setenforce 0 ##警告
setenforce 1 ##强制
selinux日志位置:
/var/log/audit/audit.log
3.Selinux的安全上下文 :
#临时修改
#此方式更改的安全上下文在selinux重启后会还原
chcon -t 标签 文件|目录
chcon -t public_content_t /var/ftp/westosfile1
chcon -Rt public_content_t /westosdir #修改目录及目录中的所有子文件的安全上下文
#永久修改安全上下文
#如果需要特殊指定安全上下文需要修改内核安全上下文列表
semanage fcontext -l ##查看内核安全上下文列表
semanage fcontext -a -t public_content_t '/westosdir(/.*)?' ##添加安全上下文,下次重启selinux后会更改,
restorecon -RvvF /westosdir/ ##显示/westos安全上下文的详细信息
touch /.autorelabel ##重启系统时selinux初始化文件标签开关文件
4.SEBOOL:
getsebool -a ##显示服务的bool值
setsebool -P ftpd_anon_write on ##更改服务的bool值
5.selinux对服务端口的限制(端口的修改):
semanage port -l | grep ssh ##查看服务允许使用的端口
semanage port -a -t ssh_port_t -p tcp 1111 ##添加端口
semanage port -a -t ssh_port_t -p tcp 1111 ##删除端口
netstat -antlupe | grep httpd ##查看服务使用的端口
在selinux开启状态下,服务想要顺利完成相应的操作既需要文件系统中有正确的安全上下文,还需要开启相应的sebool的开关;
6.setrouble服务:
/var/log/audit/audit.log ##selinux警告信息
/var/log/messages ##selinux问题解决方案
setroubleshoot-server ##此软件功能是采集警告信息并分析得到解决方案存放到message中,只提供解决方案,不考虑安全性