mysql安装后创建初始数据库和用户的配置方法

MySQL 8.0+ 默认使用 auth_socket 插件认证 root 用户,需通过 –skip-grant-tables 重置为 mysql_native_password 并设密码;创建用户须分步执行 CREATE USER、GRANT;远程访问需修改 bind-address、开放防火墙端口;字符集必须统一使用 utf8mb4 避免 emoji 和中文乱码。

mysql安装后创建初始数据库和用户的配置方法

MySQL 8.0+ 安装后首次登录用的是 auth_socket 插件,不是密码

新装的 MySQL(尤其是 Ubuntu/Debian 包安装或官方 APT 源)默认禁用 root 密码登录,root@localhost 用户使用 auth_socket 插件认证——它直接校验系统用户身份,不走密码。所以执行 mysql -u root -p 会报错 Access denied for user 'root'@'localhost',哪怕你记得安装时没设密码。

解决方法是临时切换到 mysqld_safe 模式跳过权限验证:

sudo systemctl stop mysql
sudo mysqld_safe --skip-grant-tables --skip-networking &
mysql -u root

进库后立刻刷新权限并重置插件和密码:

FLUSH PRIVILEGES;
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_strong_password';
EXIT;

再重启服务:sudo systemctl restart mysql,之后就能用密码登录了。

创建初始数据库和用户要避开 IDENTIFIED BY 语法错误

MySQL 8.0+ 废弃了老式 CREATE USER ... IDENTIFIED BY 后直接跟密码哈希的写法,也禁止在一条语句里同时建用户、赋权、设密码。必须分步:先 CREATE USER,再 GRANT,且密码必须明文传入 IDENTIFIED BY(不是哈希值)。

常见错误示例(会报错 ERROR 1064):

简灰服装商城整站 For SHOPEX

简灰服装商城整站 For SHOPEX

SHOPEX简灰服装商城整站源码下载。 安装方法:1.解压上传程序至网站根目录.. 访问:域名/bak.(用户名:admin 密码:123456)2.进入帝国备份王后,配置数据库数据库信息.选择-www.taomoban.net目录.还原数据库.3.修改FTP目录下的config/config.phpphp 数据库连接信息.4.登陆网站后台–清空缓存..5.删除bak文件夹 后台:shopadm

下载

-- ❌ 错误:MySQL 8 不支持这种旧语法
CREATE USER 'appuser'@'localhost' IDENTIFIED BY PASSWORD '*ABC...';

正确做法:

  • CREATE DATABASE IF NOT EXISTS appdb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
  • CREATE USER 'appuser'@'localhost' IDENTIFIED BY 'strong_pass_2024';
  • GRANT SELECT, INSERT, UPDATE, DELETE ON appdb.* TO 'appuser'@'localhost';
  • FLUSH PRIVILEGES;(仅在修改系统表后必要;GRANT 本身已自动刷新)

远程访问需要额外放开 bind-address防火墙

默认配置中 bind-address = 127.0.0.1,只允许本地连接。想让应用服务器(比如 Python 的 pymysql 或 Node.jsmysql2)远程连进来,得改 MySQL 配置:

  • 编辑 /etc/mysql/mysql.conf.d/mysqld.cnf(Ubuntu)或 /etc/my.cnf(CentOS),把 bind-address 改成 0.0.0.0 或具体内网 IP
  • 创建用户时用 'appuser'@'192.168.1.%''appuser'@'%'(后者不推荐生产环境)
  • 确认系统防火墙放行 3306 端口:sudo ufw allow 3306(Ubuntu)或 sudo firewall-cmd --add-port=3306/tcp --permanent(CentOS)
  • 测试连接:mysql -h your_mysql_ip -u appuser -p

字符集不设 utf8mb4 会导致 emoji 和部分中文乱码

MySQL 的 utf8 实际只支持最多 3 字节 UTF-8 字符(不含 emoji、某些生僻汉字),必须显式用 utf8mb4。不只是建库时设,还要确保客户端连接也用这个字符集,否则插入 emoji 会变成 ??? 或报错 Incorrect string value

完整设置建议:

  • 建库:CREATE DATABASE appdb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
  • 建表时也指定:CREATE TABLE users (name VARCHAR(100)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
  • 连接字符串里加参数:?charset=utf8mb4(如 Python 的 mysql://user:pass@host/db?charset=utf8mb4
  • 检查当前连接字符集:SHOW VARIABLES LIKE 'character_set%';,确保 character_set_clientconnectionresults 都是 utf8mb4

漏掉任意一环都可能让中文或 emoji 在某一层被截断或转义。

https://www.php.cn/faq/1963905.html

发表回复

Your email address will not be published. Required fields are marked *