小编Arc*_*ing的帖子

防止任何外部 mysql 登录尝试

如何防止任何外部登录到我的 Mysql 数据库?

也就是说,如何确保可以操纵我的数据库的唯一方法是使用 SSH 登录到我的机器并以 root/sudoer 身份工作。

我的机器是Ubuntu 服务器,我已经删除了 PHPmyadmin,所以当我使用 HTTPS 时,人们无法尝试从端口 80 或 443 登录,但我认为人们仍然可以尝试使用诸如Mysql workbench或类似软件之类的软件登录,我也希望防止这种情况发生并实际锁定我的数据库,以便只有我的操作系统的 root 用户/sudoer 可以通过mysql -u root -p.

澄清一下,我希望其他数据库用户无法使用他们的密码从我的系统或外部登录——我是唯一一个使用这台机器的人,但即使除了 root/sudoer 之外还有其他机器用户,我仍然希望他们无法登录到 Mysql,而且我也不希望任何人从机器外部登录 - 换句话说,我不希望除我之外的任何其他人操作数据库。


我想我应该锁定除 3306 之外的一些额外端口。对吗?

我可以从以下列表中删除任何此类端口/etc/csf/csf.conf

# Allow incoming TCP ports
TCP_IN = "20,21,22,25,53,80,110,143,443,465,587,993,995,9000"

# Allow outgoing TCP ports
TCP_OUT = "20,21,22,25,53,80,110,113,443,587,993,995,9000"
Run Code Online (Sandbox Code Playgroud)

注意:我为 PHP-FPM 未过滤端口 9000。

security mysql

3
推荐指数
1
解决办法
191
查看次数

扩展变量和打印变量(如使用 echo 或 printf)有什么区别?

扩展变量和打印变量(如echoprintf)有什么区别?

如果我理解正确,打印一个变量(它的值)只是扩展它的一个例子。也许代入它的值也是一个例子。

更新

在解释差异之前,请用您自己的话给出术语“变量扩展”的简短定义。

shell variable

2
推荐指数
1
解决办法
2624
查看次数

使 mysql CLI 以交互方式询问我的密码

我使用以下代码作为更大脚本的一部分:

mysql -u root -p << MYSQL
    create user '${DOMAIN}'@'localhost' identified by '${DOMAIN}';
    create database ${DOMAIN};
    GRANT ALL PRIVILEGES ON ${DOMAIN}.* TO ${domain}@localhost;
MYSQL
Run Code Online (Sandbox Code Playgroud)

如您所见,它创建了一个授权的、所有特权的数据库用户,以及一个具有相同值(密码也将具有相同值)的数据库实例。

DB user ====> ${domain}.
DB user password ====> ${domain}.
DB instance ====> ${domain}.
Run Code Online (Sandbox Code Playgroud)

这是有问题的,因为我需要不同的密码。当然,我可以在整个脚本完成执行后从 `${domain} 手动更改密码,但这不是我想要的:

我想要的是直接在执行时以交互方式键入/粘贴密码。

换句话说,我希望提示我输入数据库用户的密码是运行脚本的一个组成部分。

我已经尝试过以下代码,但失败了:

mysql -u root -p << MYSQL
    create user '${DOMAIN}'@'localhost' identified by -p;
    create database ${DOMAIN};
    GRANT ALL PRIVILEGES ON ${DOMAIN}.* TO ${domain}@localhost;
MYSQL
Run Code Online (Sandbox Code Playgroud)

通过在脚本执行中直接键入/粘贴(而不是在脚本执行后手动更改),能够以交互方式插入密码的正确方法是什么?

command-line password prompt mysql interactive

2
推荐指数
1
解决办法
1130
查看次数

如何使用wget下载adminer?

管理员主页说:

最新稳定版本(例如通过 wget 使用): https://www.adminer.org/latest[ -mysql][-en].php

我尝试使用以下命令下载它:

wget -p /var/www/html https://www.adminer.org/latest[-mysql][-en].php
Run Code Online (Sandbox Code Playgroud)

我收到错误:

未找到错误404。

为什么下载失败?

php webserver

2
推荐指数
1
解决办法
8876
查看次数

从脚本文件调用 Bash 函数失败,而从终端调用成功

在使用 Bash 的 Ubuntu 16.04 中,我创建了一个文件$HOME/ulcwe/software_internal.sh,其中包含一个rse()没有调用的函数。该文件源自~/.bashrc(它是由其自身获取的),我可以rse从终端中的任何位置调用,并且它将运行而不会出现错误。

然而,我尝试运行此脚本文件,其中包含对第 36 行的调用rse,但出现此错误:

第 36 行:rse:未找到命令

为什么函数在手动调用(rse在 Bash 中键入并执行)中调用成功,但在 Bash 脚本中调用失败?如何从脚本中成功调用它?

source shell-script files bash-functions

2
推荐指数
1
解决办法
1342
查看次数

为什么这个命令中有printf和print?

在学习时,fail2ban我遇到了这个命令。我以前从未使用awk过,只与sed. 我不明白为什么有printfprint,有:

awk '{ printf "# "; print; }' /etc/fail2ban/jail.conf | sudo tee /etc/fail2ban/jail.local
Run Code Online (Sandbox Code Playgroud)

为什么两者都在?

顺便说一句,如果你知道,我邀请你在评论中分享一个 sed 版本。

debian sed printing awk fail2ban

1
推荐指数
1
解决办法
77
查看次数

如何将软件包添加到所有 Debian 发行版?

如何将软件包添加到所有 Debian 发行版?

如果该软件包被社区接受,那么任何人都sudo apt-get install example可以从任何 Debian 发行版(无论是 Debian、Ubuntu 还是其他任何发行版)安装它。

如果有的话,这怎么可能?

debian apt software-installation package-management

1
推荐指数
1
解决办法
61
查看次数

curl -O:为什么不能下载文件特定目录?

man curl入门curl -O说:

如果要将文件保存在不同的目录中,请确保更改 cur? 在使用 -O, --remote-name 标志调用 curl 之前租用工作目录!

为什么不能将文件下载到特定目录,而必须cd /example将文件下载到特定目录?

我知道用wget这种方式是可能的:

wget -P /example https://example.com/file
Run Code Online (Sandbox Code Playgroud)

但我确实想知道为什么它似乎不是与curl.

download directory cd-command wget curl

1
推荐指数
2
解决办法
5283
查看次数

为什么这个简单的 rm -rf 命令会破坏我的操作系统?

我使用 Bash 4.3.48(1),并在测试 VPS 机器上运行以下命令模式:

rm -rf ${drt}/${pma}*
Run Code Online (Sandbox Code Playgroud)

该命令删除了整个操作系统(Ubuntu)。通过执行可以明显看出这一点cd /,除了以下错误之外什么也没返回:

bash: cd /: 没有这样的文件或目录

更深入地观察,发生这种情况是因为上面原始命令中的两个变量都没有声明:

  1. 我创建了一个名为 的文件~/repoName/assignments_variables.sh,其中包含导出变量的列表(包括drtpma)。

  2. 相反source /etc/bash.bashrc,我运行了 running /etc/bash.bashrc,这是错误的,因为该文件仅与当前会话相关(尽管它可用于随后运行自己在子会话中执行数据的文件)。


现在我很清楚错误的路径是问题的一般原因,我想更深入地探讨一下并提出以下问题:

为什么 会rm -rf忽略错误的变量扩展并继续转到/*?我知道只有rm -rf在找到目录时才应该删除它,因此不应依赖于不存在的目录的部分路径(就像导致删除操作系统一样)。我如何改进该命令以涵盖将来可能出现的类似错误路径情况(由于错误的变量扩展)?/*rm -rf

是否有一些 Bash 指令可以确保 Bash 永远不会扩展空变量(直到我撤消该指令)?


让我强调一下:我通常不仅进行备份,而且进行双重备份。这确实是一个后台有 x3 备份的测试环境。

bash ubuntu path rm variable-substitution

1
推荐指数
1
解决办法
1296
查看次数

当整数 grep 与字符串不匹配时返回什么退出代码?

当整数 grep 与字符串不匹配时返回什么退出代码?

我知道匹配时返回 0,不匹配时返回 1。

那是对的吗?

grep exit-status

1
推荐指数
1
解决办法
8162
查看次数