如何设置服务器安全及root权限丢失怎么办,user表没了

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS MySQL,高可用系列 2核4GB
简介:




root权限丢失

今天本来是想把root修改成别的名字 哪知道是直接创建一个用户,然后root给我删除了,啥权限都没了,user表 权限全是n,我当时连user表都给我清空了害怕冲突

161034602.jpg

161036334.jpg



1
TRUNCATE TABLE user;  清空user表数据
1
insertintomysql.user(Host,User,Password)values( "localhost" , "root" , "****" );  // 插入数据
1
2
3
4
5
6
7
mysql>  select * from user;
+-----------+------+-------------------------------------------+-------------+-------------+-------------+-------------+-------------+-----------+-------------+---------------+--------------+-----------+------------+-----------------+------------+------------+--------------+------------+-----------------------+------------------+--------------+-----------------+------------------+------------------+----------------+---------------------+--------------------+------------------+------------+--------------+----------+------------+-------------+--------------+---------------+-------------+-----------------+----------------------+
| Host      | User | Password                                  | Select_priv | Insert_priv | Update_priv | Delete_priv | Create_priv | Drop_priv | Reload_priv | Shutdown_priv | Process_priv | File_priv | Grant_priv | References_priv | Index_priv | Alter_priv | Show_db_priv | Super_priv | Create_tmp_table_priv | Lock_tables_priv | Execute_priv | Repl_slave_priv | Repl_client_priv | Create_view_priv | Show_view_priv | Create_routine_priv | Alter_routine_priv | Create_user_priv | Event_priv | Trigger_priv | ssl_type | ssl_cipher | x509_issuer | x509_subject | max_questions | max_updates | max_connections | max_user_connections |
+-----------+------+-------------------------------------------+-------------+-------------+-------------+-------------+-------------+-----------+-------------+---------------+--------------+-----------+------------+-----------------+------------+------------+--------------+------------+-----------------------+------------------+--------------+-----------------+------------------+------------------+----------------+---------------------+--------------------+------------------+------------+--------------+----------+------------+-------------+--------------+---------------+-------------+-----------------+----------------------+
| localhost | root | ***** | N           | N           | Y           | N           | N           | N         | N           | N             | N            | N         | N          | N               | N          | N          | N            | N          | N                     | N                | N            | N               | N                | N                | N              | N                   | N                  | N                | N          | N            |          |            |             |              |             0 |           0 |               0 |                    0 |
+-----------+------+-------------------------------------------+-------------+-------------+-------------+-------------+-------------+-----------+-------------+---------------+--------------+-----------+------------+-----------------+------------+------------+--------------+------------+-----------------------+------------------+--------------+-----------------+------------------+------------------+----------------+---------------------+--------------------+------------------+------------+--------------+----------+------------+-------------+--------------+---------------+-------------+-----------------+----------------------+
1 row inset(0.00 sec)

权限全部变成N了,想做啥都是报错,更新 查询 删除。。。没权限,怎么办了

首先杀死

1
2
3
killall mysql
kiall mysqld
后台启动bin /mysqld_safe--user =mysql --skip-grant-table --skip-networking

屏蔽权限。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
use mysql
先开始更新还是报错 所以先修改更新权限
update user setUpdate_priv = 'Y' where user =  'root'
如果root 没有所有数据的权限
update user setSelect_priv = 'Y' where user =  'root' ;
update user setInsert_priv = 'Y' where user =  'root' ;
update user setUpdate_priv = 'Y' where user =  'root' ;
update user setDelete_priv = 'Y' where user =  'root' ;
update user setCreate_priv = 'Y' where user =  'root' ;
update user setDrop_priv = 'Y' where user =  'root' ;
update user setReload_priv = 'Y' where user =  'root' ;
update user setShutdown_priv = 'Y' where user =  'root' ;
update user setProcess_priv = 'Y' where user =  'root' ;
update user setFile_priv = 'Y' where user =  'root' ;
update user setGrant_priv = 'Y' where user =  'root' ;
update user setReferences_priv = 'Y' where user =  'root' ;
update user setIndex_priv = 'Y' where user =  'root' ;
update user setAlter_priv = 'Y' where user =  'root' ;
update user setShow_db_priv = 'Y' where user =  'root' ;
update user setSuper_priv = 'Y' where user =  'root' ;
update user setCreate_tmp_table_priv = 'Y' where user =  'root' ;
update user setLock_tables_priv = 'Y' where user =  'root' ;
update user setExecute_priv = 'Y' where user =  'root' ;
update user setRepl_slave_priv = 'Y' where user =  'root' ;
update user setRepl_client_priv = 'Y' where user =  'root' ;
update user setCreate_view_priv = 'Y' where user =  'root' ;
update user setShow_view_priv = 'Y' where user =  'root' ;
update user setCreate_routine_priv = 'Y' where user =  'root' ;
update user setAlter_routine_priv = 'Y' where user =  'root' ;
update user setCreate_user_priv = 'Y' where user =  'root' ;
update user setEvent_priv = 'Y' where user =  'root' ;
update user setTrigger_priv = 'Y' where user =  'root' ;


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Select_priv。确定用户是否可以通过SELECT命令选择数据。
Insert_priv。确定用户是否可以通过INSERT命令插入数据。
Update_priv。确定用户是否可以通过UPDATE命令修改现有数据。
Delete_priv。确定用户是否可以通过DELETE命令删除现有数据。
Create_priv。确定用户是否可以创建新的数据库和表。
Drop_priv。确定用户是否可以删除现有数据库和表。
Reload_priv。确定用户是否可以执行刷新和重新加载MySQL所用各种内部缓存的特定命令,包括日志、权限、主机、查询和表。
Shutdown_priv。确定用户是否可以关闭MySQL服务器。在将此权限提供给root账户之外的任何用户时,都应当非常谨慎。
Process_priv。确定用户是否可以通过SHOW PROCESSLIST命令查看其他用户的进程。
File_priv。确定用户是否可以执行SELECT INTO OUTFILE和LOAD DATA INFILE命令。
Grant_priv。确定用户是否可以将已经授予给该用户自己的权限再授予其他用户。例如,如果用户可以插入、选择和删除foo数据库中的信息,并且授予了GRANT权限,则该用户就可以将其任何或全部权限授予系统中的任何其他用户。
References_priv。目前只是某些未来功能的占位符;现在没有作用。
Index_priv。确定用户是否可以创建和删除表索引。
Alter_priv。确定用户是否可以重命名和修改表结构。
Show_db_priv。确定用户是否可以查看服务器上所有数据库的名字,包括用户拥有足够访问权限的数据库。可以考虑对所有用户禁用这个权限,除非有特别不可抗拒的原因。
Super_priv。确定用户是否可以执行某些强大的管理功能,例如通过KILL命令删除用户进程,使用SET
GLOBAL修改全局MySQL变量,执行关于复制和日志的各种命令。
Create_tmp_table_priv。确定用户是否可以创建临时表。
Lock_tables_priv。确定用户是否可以使用LOCK TABLES命令阻止对表的访问/修改。
Execute_priv。确定用户是否可以执行存储过程。此权限只在MySQL 5.0及更高版本中有意义。
Repl_slave_priv。确定用户是否可以读取用于维护复制数据库环境的二进制日志文件。此用户位于主系统中,有利于主机和客户机之间的通信。
Repl_client_priv。确定用户是否可以确定复制从服务器和主服务器的位置。


1
2
3
4
5
setpassword  for 'root' @ 'localhost' =password( '****' );
GRANT ALL PRIVILEGES ON *.* TO  'root' @ '%' WITH GRANT OPTION ;
flush privileges;
bye
更新密码


1
2
3
谨慎操作
delete from user where not(host= "localhost" and user= "root" );
flush privileges;


现在再来查看下

1
2
3
4
5
6
7
mysql>  select * from user;
+-----------+------+-------------------------------------------+-------------+-------------+-------------+-------------+-------------+-----------+-------------+---------------+--------------+-----------+------------+-----------------+------------+------------+--------------+------------+-----------------------+------------------+--------------+-----------------+------------------+------------------+----------------+---------------------+--------------------+------------------+------------+--------------+----------+------------+-------------+--------------+---------------+-------------+-----------------+----------------------+
| Host      | User | Password                                  | Select_priv | Insert_priv | Update_priv | Delete_priv | Create_priv | Drop_priv | Reload_priv | Shutdown_priv | Process_priv | File_priv | Grant_priv | References_priv | Index_priv | Alter_priv | Show_db_priv | Super_priv | Create_tmp_table_priv | Lock_tables_priv | Execute_priv | Repl_slave_priv | Repl_client_priv | Create_view_priv | Show_view_priv | Create_routine_priv | Alter_routine_priv | Create_user_priv | Event_priv | Trigger_priv | ssl_type | ssl_cipher | x509_issuer | x509_subject | max_questions | max_updates | max_connections | max_user_connections |
+-----------+------+-------------------------------------------+-------------+-------------+-------------+-------------+-------------+-----------+-------------+---------------+--------------+-----------+------------+-----------------+------------+------------+--------------+------------+-----------------------+------------------+--------------+-----------------+------------------+------------------+----------------+---------------------+--------------------+------------------+------------+--------------+----------+------------+-------------+--------------+---------------+-------------+-----------------+----------------------+
| localhost | root | *01540717ECF753C83ECBAD389C3CE2291FDD5BD4 | Y           | Y           | Y           | Y           | Y           | Y         | Y           | Y             | Y            | Y         | Y          | Y               | Y          | Y          | Y            | Y          | Y                     | Y                | Y            | Y               | Y                | Y                | Y              | Y                   | Y                  | Y                | Y          | Y            |          |            |             |              |             0 |           0 |               0 |                    0 |
+-----------+------+-------------------------------------------+-------------+-------------+-------------+-------------+-------------+-----------+-------------+---------------+--------------+-----------+------------+-----------------+------------+------------+--------------+------------+-----------------------+------------------+--------------+-----------------+------------------+------------------+----------------+---------------------+--------------------+------------------+------------+--------------+----------+------------+-------------+--------------+---------------+-------------+-----------------+----------------------+
1 row inset(0.00 sec)

1
2
3
4
5
6
7
8
mysql> GRANT ALL PRIVILEGES ON *.* TO  'root' @ '%' WITH GRANT OPTION ;
Query OK, 0 rows affected (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
mysql> grant all on *.* to  'root' @ '%' identified by  '****' ;
Query OK, 0 rows affected (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

都可以了


mysql目录权限

1
2
3
cpsuport-files /my-medium .cnf  /etc/my .cnf   // 修改目录权限
chownroot:mysql  /etc/my .cnf
chmod644  /etc/my .cnf


mysql安全设置

1.禁止远程连接mysql

因为我们的mysql只需要本地的php脚本进行连接,所以我们无需开socket进行监听,那么我们完全可以关闭监听的功能。

配置my.cnf文件,在[mysqld]部分添加 skip-networking 参数

BLOB:

MySQL的四种BLOB类型

类型 大小(单位:字节)

TinyBlob 最大 255

Blob 最大 65K

MediumBlob 最大 16M

LongBlob 最大 4G


2.删除默认的数据库和用户

drop database test;

use mysql;

delete from db;

delete from user where not(host="localhost" and user="root");

flush privileges;

4. 本地文件安全:

提高本地安全性,主要是防止mysql对本地文件的存取

set-variable=local-infile=0

6.最小权限用户:

create database db1;

grant select,insert,update,delete,create,drop privileges on database.* to user@localhost identified by 'passwd';


7. 限制普通用户浏览其它数据库,编辑my.cnf在[mysqld]添加:

--skip-show-database

8.快速修复MySQL数据库

修复数据库

mysqlcheck -A -o -r -p

修复指定的数据库

mysqlcheck -o -r database -p

9.跟据内存的大小选择MySQL的配置文件:

my-small.cnf # > my-medium.cnf # 32M - 64M

my-large.cnf # memory = 512M

my-huge.cnf # 1G-2G

my-innodb-heavy-4G.cnf # 4GB


服务器安全总结:

1.root用户禁止使用,加深root密码

2.定期更改数据库的名字及管理员帐密

3.定期备份数据

4.关闭不需要的服务

5.创建一个User账户,运行系统

6.Nginx安全加固和优化

7.网站目录权限设置:

(1)网站上传目录和数据库目录一般需要分配“写入”权限,但一定不要分配执行权限

(2)其他目录一般只分配“读取”权限即可

8.外网只开80,其他端口没对外开放


我们从这8个方面考虑

首先是从工具自动生成加密密码,root禁用

2.定期给数据库修改密码

1
2
3
4
5
6
7
8
9
10
11
12
// 进入数据库
mysql -u root -p123456
// 创建用户
insert into mysql.user(Host,User,Password)values(“localhost”, “abc”,password(“123“);  (只添加一次)
// 修改密码
  setpassword  for 'abc' @ 'localhost' =password( '123456' );
// 刷新权限
flush privileges;
  // 授权用户拥有权限center数据库所有权限(center 根据数据库名称修改)
grant all privileges on center.* to abc@localhost identified by  '123456'
#刷新权限
flush privileges;


修改root账户,改变默认mysql管理员的名称这个工作是可以选择的,根据个人习惯,因为默认的mysql的管理员名称是root,所以如果能够修改的话,能够防止一些脚本小子对系统的穷举。我们可以直接修改数据库

1
2
update mysql.user setuser= "abc" where user= "root" ;
flush privileges;


3.定期备份数据是最重要的(后面附上脚本)


4.关闭不需要的服务(脚本附上)


5.创建普通用户(脚本附上)


6.nginx加固

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
(这里配置文件直接在服务器部署时写入脚本里无需修改)
(1).修改php.ini文件,将cgi.fix_pathinfo的值设置为0; 安全漏洞
(2).彻底隐藏NGinx版本号的安全
vim nginx.conf
在http {—}里加上server_tokens off; 如:
http {
……省略
sendfile on;
tcp_nopush on;
keepalive_timeout 60;
tcp_nodelay on;
server_tokens off;
(3)编辑php-fpm配置文件,如fastcgi.conf或fcgi.conf(这个配置文件名也可以自定义的,根据具体文件名修改):
找到:
fastcgi_param SERVER_SOFTWARE nginx/$nginx_version;
改为:
fastcgi_param SERVER_SOFTWARE nginx;
(4)重新加载nginx配置:
# /etc/init.d/nginx reload

7.对外开放端口(脚本附上)

服务器优化脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#!/bin/bash
#The author:cs312779641
mkdir -p  /mysqlback
back= /mysqlback
#创建一个普通用户
username=1234
useradd   $username
echo “1234” |  passwd --stdin $username
#该脚本用于关闭服务器上非必须的系统服务项
#定义所要停止的服务,可以根据实际服务器应用更改
SERVICES= "acpid atd auditd autofs avahi-daemon avahi-dnsconfd NetworkManager capi bluetooth cpuspeed cups dund firstboot haldaemon hidd ip6tables irda isdn mcstrans messagebus netfs netplugd nfslock pand pcscd portmap rawdevices restorecond xfs sendmail "
forservice  in $SERVICES
do
#关闭服务随系统启动
chkconfig $service off
#停止选择服务
service $service stop
done
#文件备份(实验)
name=db
cd   /data/
date =` date -I`;
tar -zcvf  /$back/$name$ date . tar .gz  html
#数据库备份
mysqldump  --databases db -uroot -p123456 >/$back /db ` date +%Y-%m-%d`.sql
#清空15天以前文件
find /$back/ -mtime +15 -name  "*.tar.gz" -execrm-rf {} \;
find /$back/ -mtime +15 -name  "*.sql" -execrm-rf {} \;
#防火墙脚本
cat /etc/sysconfig/iptables <<EOF
# Firewall configuration written by system-config-securitylevel
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:RH-Firewall-1-INPUT - [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited
COMMIT
EOF
service iptables restart

优化服务器,加深服务器安全,数据库也要加深安全,对运维或者安全来讲重则之重!!!




本文转自 cs312779641 51CTO博客,原文链接:http://blog.51cto.com/chenhao6/1320479
相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
3天前
|
安全 Ubuntu 应用服务中间件
Web服务器安全最佳实践
【8月更文第28天】随着互联网的发展,Web服务器成为了企业和组织的重要组成部分。然而,这也使得它们成为黑客和恶意软件的目标。为了确保数据的安全性和系统的稳定性,采取适当的安全措施至关重要。本文将探讨一系列保护Web服务器的最佳策略和技术,并提供一些实用的代码示例。
19 1
|
2月前
|
存储 监控 安全
服务器安全:构建数字时代的坚固堡垒
在数字化时代,服务器安全至关重要,它直接影响企业业务连续性和客户数据保护。服务器遭受攻击或数据泄露将给企业带来巨大损失。服务器面临网络攻击、恶意软件、内部与物理威胁。关键防护措施包括严格访问控制、数据加密与备份、安全审计与监控、部署防火墙和入侵检测系统、及时安全更新及物理安全防护。最佳实践涵盖制定全面安全策略、采用先进技术、员工培训、定期安全评估与测试及建立应急响应团队。通过这些措施,企业能构建坚实的服务器安全防护体系。
117 55
|
18天前
|
云安全 弹性计算 安全
阿里云服务器基础安全防护简介,云服务器基础安全防护及常见安全产品简介
在使用云服务器的过程中,云服务器的安全问题是很多用户非常关心的问题,阿里云服务器不仅提供了一些基础防护,我们也可以选择其他的云安全类产品来确保我们云服务器的安全。本文为大家介绍一下阿里云服务器的基础安全防护有哪些,以及阿里云的一些安全防护类云产品。
阿里云服务器基础安全防护简介,云服务器基础安全防护及常见安全产品简介
|
17天前
|
Ubuntu Linux 网络安全
Ubuntu——初始化服务器切换到root用户
Ubuntu——初始化服务器切换到root用户
25 1
|
2月前
|
弹性计算 Linux 云计算
云服务器 ECS产品使用问题之如何设置adminpassword
云服务器ECS(Elastic Compute Service)是各大云服务商阿里云提供的一种基础云计算服务,它允许用户租用云端计算资源来部署和运行各种应用程序。以下是一个关于如何使用ECS产品的综合指南。
|
2月前
|
SQL 关系型数据库 MySQL
云服务器 ECS产品使用问题之出现“1044 - Access denied for user ‘root‘@‘%‘ to database ‘数据库名称‘”这样的错误,该怎么办
云服务器ECS(Elastic Compute Service)是各大云服务商阿里云提供的一种基础云计算服务,它允许用户租用云端计算资源来部署和运行各种应用程序。以下是一个关于如何使用ECS产品的综合指南。
|
8天前
|
监控 安全 网络安全
如何保护 Apache 服务器的安全
【8月更文挑战第23天】
22 0
|
9天前
|
域名解析 网络协议 数据中心
【应用服务 App Service】当遇见某些域名在Azure App Service中无法解析的错误,可以通过设置指定DNS解析服务器来解决
【应用服务 App Service】当遇见某些域名在Azure App Service中无法解析的错误,可以通过设置指定DNS解析服务器来解决
|
2月前
|
弹性计算 Linux 数据安全/隐私保护
云服务器 ECS产品使用问题之linux如何设置服务器密码
云服务器ECS(Elastic Compute Service)是各大云服务商阿里云提供的一种基础云计算服务,它允许用户租用云端计算资源来部署和运行各种应用程序。以下是一个关于如何使用ECS产品的综合指南。
|
2月前
|
弹性计算 Linux 数据安全/隐私保护
云服务器 ECS产品使用问题之幻兽帕鲁服务器如何设置/修改密码
云服务器ECS(Elastic Compute Service)是各大云服务商阿里云提供的一种基础云计算服务,它允许用户租用云端计算资源来部署和运行各种应用程序。以下是一个关于如何使用ECS产品的综合指南。

热门文章

最新文章

下一篇
云函数