如何在mysql中配置初始用户和密码

哈,你在教我如何做某事吗?好吧,数据库安全确实需要认真对待,尤其是对于像 MySQL 这样古老的数据库。
不过你给我的步骤我之前做的时候感觉有点混乱,尤其是手动重置密码部分,每次都很容易卡住。
给大家讲一下我的实践经验:
上周,我在上海某商场的服务器上配置MySQL时,遇到了一个坑。
我是用apt安装的。
本以为会要求设置root密码,结果开机后直接用root登录,没有密码。
我很快检查了日志,在/var/log/mysqld.log中找到了临时密码。
密码确实是随机的,看起来很烦人。

然后我使用 mysql_secure_installation 脚本。
说实话,这个剧本还是很巧妙的。
它可以帮助您删除匿名用户并防止远程 root 访问。
但是,有一点需要注意 - 它会要求您删除测试数据库。
如果安装时不注意,你创建的库也可能消失了。
我当时就差点点Y了,幸好我的反应很快就停止了。

如果您安装的是MySQL 8 .0或以上版本,手动重置密码的命令与5 .7 +不同。
你提供的ALTERUSER语法是正确的,但是在实际操作中,我发现在8 .0中,有时可以不使用--skip-grant-tables直接更改密码。
这个版本似乎对旧命令不太严格。
不过你提到的绕过登录前权限验证的方法确实很稳定,特别适合忘记密码或者权限被锁定的情况。

在创建普通用户时,我建议授予更细化的权限。
例如,如果只允许特定用户使用特定的表,那么在使用GRANT时指定表名比授予整个数据库的权限安全得多。
我遇到的陷阱是我曾经为一个用户开放了太多的权限。
结果,另一位同事不小心删除了数据。
这是一场悲剧。
当谈到远程访问控制时,你是对的。
使用'用户名'@'%'必须与防火墙配合,否则任何人都可以连接,然后就完了?
在密码安全方面,我认为除了复杂之外,还应该定期更换。
我自己的习惯是环境一变就改密码。
虽然比较麻烦,但是总比泄露密码好。

我对日志的审核较少,主要是因为我还没有养成这样的习惯。
其实你是对的。
定期阅读 error.log 可以揭示许多问题,例如暴力破解尝试。

无论如何,你提到的步骤的基本逻辑是好的。
使用时应该非常小心,尤其是手动更改配置或命令参数时。
我还在思考一个问题,就是现在容器部署如此流行,如何在 Docker 中进行这些初始用户配置可能是一种不同的做法。

mysql的默认密码是什么

MySQL默认密码没有固定值。
安装方式、系统、版本都会受到影响。

1 . 空密码:没有主动设置密码,root可能没有密码。
尝试使用命令 mysql -u root "" 登录。
2 、检验方法:
无密码登录:mysql -u root。
OK 表示密码为空。

查表:登录后,选择用户表。
空的authentication_string意味着没有密码。

注意:新版本MySQL(5 .7 +)中的密码字段可能是authentication_string。

3 必须更改密码:首次安装后立即更改。

命令:ALTER USER 'root'@'localhost' IDENTIFIED BY '您的强密码'。

执行后刷新权限。

强密码:大小写字母数字符号混合,超过 1 2 个字符。

4 其他注意事项:
版本差异:MySQL 5 .7 + Linux默认auth_socket插件,可以sudomysql登录。

Windows 安装向导通常强制输入密码。

安全风险:默认密码很容易被暴力破解。

初始化脚本:Docker等可能会使用环境变量MYSQL_ROOT_PASSWORD来设置密码。

5 忘记密码重置:
停止MySQL服务:sudo systemctl stop mysql。

重新启动以跳过验证:sudo mysqld_safe --skip-grant-tables & mysql -u root。

更改密码:ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码'。

执行FLUSH权限; 出口; 重新启动服务: sudo systemctl restart mysql。

总结:MySQL没有统一的默认密码,空密码或简单密码很常见。
需要更改密码。
在安装过程中使用 mysql_secure_installation 脚本进行安全配置。

mysql安装后密码

我记得有一次,一个周末下午我正在修改一个新安装的MySQL数据库。
已安装,迫不及待想尝试一下。
我在终端中输入命令 $mysql -uroot -p ,我一直在想这次我需要设置一个好的密码。
结果我直接按回车就登录了,没有任何提示。
你好,我想我需要设置一个初始密码。

然后就乱搞了MySQL命令行,想着怎么设置密码。
按照网上教程,输入SET PASSWORD FOR 'root'@'localhost' = PASSWORD('new_password_here');。
我还是觉得密码应该包含数字、大小写字母、特殊符号。
事情不能太简单。
结果命令行提示我权限不够。

等等,我想,我需要先更新用户表中的密码字段吗?所以我输入 UPDATE mysql.user SET Authentication_string=PASSWORD('new_password_here') WHERE user='root' AND host='localhost'; ,然后更新权限并执行 FLUSH PRIVILEGES; 。

经过这一系列的操作,我心里舒服多了。
退出命令行,以为下次需要使用新密码登录。
我突然想到这个密码应该定期更改。
不能太简单,也不能太漏。
嘿嘿,大家一定要时刻注意安全啊。