程序员@老李 - Linux
https://blog.mostion.com/category/linux/
-
Rocky Linux 8 中禁用 IPv6 并仅启用 IPv4
https://blog.mostion.com/archives/56/
2025-06-17T13:42:00+08:00
在 Rocky Linux 8 中禁用 IPv6 并仅启用 IPv4,可以通过以下步骤完成(推荐使用 nmcli 或直接修改内核参数):方法 1:通过 nmcli 禁用 IPv6(临时生效,重启后保留)1. 查看当前网络连接名称nmcli connection show输出示例(假设连接名为 ens192):NAME UUID TYPE DEVICE
ens192 518fd4a1-xxxx-xxxx-xxxx-xxxxxxxxxxxx ethernet ens1922. 禁用 IPv6 并仅启用 IPv4nmcli connection modify ens192 ipv6.method "disabled"
nmcli connection up ens192 # 重新激活连接方法 2:修改网络配置文件(永久生效)1. 编辑网卡配置文件vi /etc/sysconfig/network-scripts/ifcfg-ens192在文件中添加或修改以下参数:IPV6INIT=no
IPV6_AUTOCONF=no
IPV6_DEFROUTE=no
IPV6_FAILURE_FATAL=no2. 重启网络服务systemctl restart NetworkManager方法 3:通过内核参数禁用 IPv6(全局禁用)1. 修改 GRUB 配置vi /etc/default/grub在 GRUB_CMDLINE_LINUX 行添加 ipv6.disable=1:GRUB_CMDLINE_LINUX="... ipv6.disable=1"2. 重新生成 GRUB 配置grub2-mkconfig -o /boot/grub2/grub.cfg3. 重启系统reboot验证 IPv6 是否已禁用# 检查网卡是否无 IPv6 地址
ip a | grep inet6
# 应无输出
# 验证内核参数
cat /proc/cmdline | grep ipv6.disable
# 应显示 `ipv6.disable=1`(如果使用方法3)恢复 IPv6(如需启用)1. 恢复 nmcli 配置nmcli connection modify ens192 ipv6.method "auto"
nmcli connection up ens1922. 删除内核参数编辑 /etc/default/grub 移除 ipv6.disable=1,重新生成 GRUB 并重启。注意事项优先级:方法 1/2 仅针对特定网卡,方法 3 是全局禁用。生产环境中建议优先使用方法 1 或 2,避免影响其他服务。兼容性:某些应用程序(如 Docker、Kubernetes)可能依赖 IPv6,禁用前需测试。防火墙:如果使用 firewalld,IPv6 规则会自动失效,无需额外操作。通过上述步骤,系统将仅使用 IPv4 通信。
-
MySQL 8 禁用表名大小写敏感
https://blog.mostion.com/archives/55/
2025-06-17T13:41:52+08:00
在 Rocky Linux 8 上使用 yum(或 dnf)安装 MySQL 8 后,如果需要 禁用表名大小写敏感(即强制表名存储为小写),需修改配置文件并重新初始化数据目录。以下是具体步骤:步骤 1:修改 MySQL 配置文件1. 编辑 MySQL 配置文件(默认路径):vi /etc/my.cnf或(如果存在):vi /etc/my.cnf.d/mysql-server.cnf2. 在 [mysqld] 段落下添加以下参数:[mysqld]
lower_case_table_names=1参数说明:lower_case_table_names=1:表名存储为小写,比较时不区分大小写。注意:MySQL 8 仅在初始化时允许修改此参数,后续更改需重新初始化数据目录!步骤 2:停止 MySQL 服务systemctl stop mysqld步骤 3:删除原有数据目录(谨慎操作!)rm -rf /var/lib/mysql/*此操作会删除所有数据库数据,确保已备份重要数据!步骤 4:重新初始化 MySQL 数据目录mysqld --initialize --user=mysql --lower-case-table-names=1关键点:--initialize:初始化数据目录。--user=mysql:指定运行用户。--lower-case-table-names=1:确保初始化时应用配置。步骤 5:启动 MySQL 服务systemctl start mysqld步骤 6:验证配置1. 登录 MySQL:mysql -u root -p(输入初始化时生成的临时密码,可通过 grep 'temporary password' /var/log/mysqld.log 查看)2. 检查参数是否生效:SHOW VARIABLES LIKE 'lower_case_table_names';输出应为:+------------------------+-------+
| Variable_name | Value |
+------------------------+-------+
| lower_case_table_names | 1 |
+------------------------+-------+常见问题解决1. 初始化报错 --lower-case-table-names=1 无效原因:MySQL 8 要求此参数必须在首次初始化时设置,且不能后续修改。解决:确保数据目录 /var/lib/mysql/ 为空,重新执行初始化命令。2. 表名仍区分大小写原因:可能未正确删除旧数据目录或配置文件未生效。检查:cat /var/lib/mysql/auto.cnf | grep lower_case_table_names如果存在旧配置,需彻底清理数据目录。3. 权限问题若启动失败,检查日志:journalctl -u mysqld修复权限:chown -R mysql:mysql /var/lib/mysql
chmod 750 /var/lib/mysql总结关键步骤:修改配置文件 → 删除数据目录 → 重新初始化。仅限新装:此方法适用于首次安装或可接受数据丢失的情况。生产环境:建议在测试环境验证后再操作,避免数据风险。⚠️ 注意:MySQL 8 默认不允许在初始化后修改 lower_case_table_names,因此必须通过重新初始化实现。
-
解决 Elasticsearch 不能以 root 用户运行的问题
https://blog.mostion.com/archives/54/
2025-06-17T13:39:00+08:00
Elasticsearch 从 5.0 版本开始出于安全考虑,默认不允许以 root 用户运行。以下是解决这个问题的几种方法:方法一:创建专用用户运行 Elasticsearch(推荐)这是最安全和推荐的做法:创建 elasticsearch 用户和组:groupadd elasticsearch
useradd -g elasticsearch elasticsearch更改 Elasticsearch 目录权限:chown -R elasticsearch:elasticsearch /usr/share/elasticsearch/
chown -R elasticsearch:elasticsearch /var/lib/elasticsearch/
chown -R elasticsearch:elasticsearch /var/log/elasticsearch/以 elasticsearch 用户启动:sudo -u elasticsearch /usr/share/elasticsearch/bin/elasticsearch方法二:修改系统配置允许以 root 运行(不推荐)如果确实需要以 root 运行(仅用于测试环境):编辑 Elasticsearch 配置文件:vim /etc/elasticsearch/jvm.options添加以下 JVM 参数:-Des.insecure.allow.root=true或者修改启动脚本:vim /usr/share/elasticsearch/bin/elasticsearch在文件开头添加:ES_JAVA_OPTS="-Des.insecure.allow.root=true"
export ES_JAVA_OPTS方法三:使用 systemd 服务(生产环境推荐)创建 systemd 服务文件:vim /etc/systemd/system/elasticsearch.service添加以下内容:[Unit]
Description=Elasticsearch
After=network.target
[Service]
User=elasticsearch
Group=elasticsearch
ExecStart=/usr/share/elasticsearch/bin/elasticsearch
Restart=always
LimitNOFILE=65536
[Install]
WantedBy=multi-user.target启用并启动服务:systemctl daemon-reload
systemctl enable elasticsearch
systemctl start elasticsearch方法四:使用 Docker 运行如果你使用 Docker,可以这样运行:docker run -d --name elasticsearch \
-p 9200:9200 -p 9300:9300 \
-e "discovery.type=single-node" \
-e "ES_JAVA_OPTS=-Xms512m -Xmx512m" \
docker.elastic.co/elasticsearch/elasticsearch:7.9.2注意事项安全警告:在生产环境中以 root 运行 Elasticsearch 有严重安全风险文件权限:确保数据目录、日志目录和配置文件有正确的权限SELinux:如果启用了 SELinux,可能需要额外配置ulimit:可能需要增加文件描述符限制:ulimit -n 65536通过创建专用用户运行 Elasticsearch 是最佳实践,既能满足安全要求,又能保证服务正常运行。