mysql如何使用默认配置安装_mysql安装快速教程

2次阅读

mysql 默认配置存在多系统差异:ubuntu/debian 默认用 auth_socket 插件导致密码登录失败;centos/rhel 8+ 需手动添加官方源并启用 mysql:8.0 模块;windows installer 默认禁用 tcp/ip;docker 镜像需显式设置密码与端口映射,且 my.cnf 必须含 [mysqld] 段及默认认证插件配置。

mysql如何使用默认配置安装_mysql安装快速教程

MySQL 默认配置安装在大多数 linux 发行版中是开箱即用的,但“默认”不等于“零配置”——实际安装后常因 mysqld 未启动、root 密码未设或 socket 路径不一致导致连接失败。

Ubuntu/Debian 上 apt 安装后为什么连不上 localhost?

Debian 系发行版(如 Ubuntu 22.04+)默认使用 auth_socket 插件认证 root 用户,不依赖密码,且 mysql 命令直连 unix socket,而非 TCP 的 3306 端口。这会导致:

  • mysql -u root -p 报错 access denied for user 'root'@'localhost'
  • mysql -u root 可登录,但仅限本地 socket 连接,127.0.0.1 会走 TCP 并失败
  • systemctl status mysql 显示 active,但 netstat -lnp | grep :3306 没有监听(默认 bind-address = 127.0.0.1,且可能被注释)

解决方法:先用无密码方式登录,再切换认证方式

sudo mysql -u root ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_secure_password'; FLUSH PRIVILEGES;

CentOS/RHEL 8+ 使用 dnf 安装 mysql-server 后找不到 mysqld?

Red Hat 系从 8 开始将 MySQL 替换为 mariadb,官方仓库不再提供 mysql-server。若坚持用 oracle MySQL:

  • 必须手动添加 MySQL 官方 YUM 源:sudo rpm -Uvh https://dev.mysql.com/get/mysql80-community-release-el8-*.noarch.rpm
  • 确认启用的是 mysql80-community,禁用 mariadb:运行 sudo dnf module reset mysql + sudo dnf module enable mysql:8.0
  • 安装后首次启动会自动生成临时密码,查看日志:sudo grep 'temporary password' /var/log/mysqld.log

注意:mysqld 服务名在 RHEL/CentOS 是 mysqld,不是 mysqlsystemctl start mysqld 才生效。

Windows 上 MySQL Installer 默认配置的坑

MySQL Installer(Web/Full 版)勾选“Developer default”看似省事,但会默认关闭 TCP/IP 连接、禁用远程访问、且 root 密码为空(仅允许 localhost socket),导致:

  • navicat 或 Python pymysql 连接时报 Can't connect to MySQL server on '127.0.0.1'
  • 配置向导里没点开 “Advanced Options”,就无法设置 bind-address 或端口
  • 安装路径含空格(如 C:Program FilesMySQL...)时,某些脚本调用 mysqld 会失败

建议:安装时选 “Server Only”,勾选 “include MySQL Server”,在配置页明确启用 TCP/IP、设好 root 密码、并把端口改为 3306(勿用 0);安装后检查 my.ini 中是否有 skip-networkingbind-address = 127.0.0.1 —— 后者允许本地 TCP,前者彻底关闭网络。

docker run mysql:8 默认配置下连不上?

Docker 官方镜像 mysql:8 不执行初始化 SQL,也不生成随机密码,除非显式传参:

  • 没设 -e MYSQL_ROOT_PASSWORD=xxx,容器会启动失败并报错 MYSQL_ROOT_PASSWORD not set
  • 设了密码但没映射端口:-p 3306:3306 缺失,宿主机无法访问
  • 挂载了自定义 my.cnf 却没配 [mysqld] 段,MySQL 忽略该文件

最简可用命令:

docker run -d    --name mysql8    -e MYSQL_ROOT_PASSWORD=root123    -p 3306:3306    -v $(pwd)/my.cnf:/etc/mysql/conf.d/my.cnf    -d mysql:8

其中 my.cnf 至少包含:

[mysqld] default-authentication-plugin=mysql_native_password

否则客户端(如旧版 MySQL Workbench)会因插件不兼容拒绝连接。

真正麻烦的不是安装,而是默认配置背后隐含的认证逻辑、网络绑定策略和权限模型——这些不会报错,但会让“连得上”变成第一道坎。

text=ZqhQzanResources