如何在Ubuntu中快速完成MySQL环境搭建 Ubuntu数据库环境搭建及字符集配置

来源:这里教程网 时间:2026-02-28 20:48:26 作者:

直接装
mysql-server
就行,别碰
mysqld
手动启停

Ubuntu 22.04+ 默认源里

mysql-server
已是 8.0.x,开箱即用。执行
sudo apt update && sudo apt install mysql-server
后服务自动启用并运行,
systemctl is-active mysql
返回
active
即可确认。不用手动调
mysqld
命令,也无需改
/etc/mysql/mysql.conf.d/mysqld.cnf
启动项——装完就跑,改配置是下一步的事。

ALTER DATABASE
不生效?得进
mysqld.cnf
改默认字符集

MySQL 8.0 默认

utf8mb4
,但新库仍可能继承旧配置。临时改单个库用
ALTER DATABASE db_name CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci;
只影响后续新建表,已有表字段编码不变。真要全局生效,必须编辑
/etc/mysql/mysql.conf.d/mysqld.cnf
,在
[mysqld]
段下加:

character-set-server = utf8mb4
collation-server = utf8mb4_0900_ai_ci

然后重启:

sudo systemctl restart mysql
。不重启,
SHOW VARIABLES LIKE 'character_set_server';
依然显示旧值。

登录报错
ERROR 1698 (28000): Access denied for user 'root'@'localhost'

这是 Ubuntu 版 MySQL 的默认安全策略:root 用户用

auth_socket
插件认证,只认系统用户,不走密码。解决方式有两种:

sudo mysql
直接进(推荐初装调试)
切到
mysql_native_password
:进 MySQL 后执行
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_password'; FLUSH PRIVILEGES;

注意:改完后普通用户用

mysql -u root -p
才能输密码登录;用
sudo mysql
仍可用,但权限模型已变。

客户端连不上?检查
bind-address
和防火墙

默认

bind-address = 127.0.0.1
,只允许本地连接。要远程访问,得改成
bind-address = 0.0.0.0
或具体 IP,并确保用户有对应主机权限:
CREATE USER 'user'@'%' IDENTIFIED BY 'pass'; GRANT ALL ON *.* TO 'user'@'%'; FLUSH PRIVILEGES;
。同时别忘了开防火墙端口:
sudo ufw allow 3306
。漏掉任一环,客户端都会卡在 “Connection refused” 或超时。

字符集配置真正起效的地方不在建库语句里,而在

mysqld.cnf
的 server 级设置和用户连接时的
SET NAMES
行为——这两处不一致,应用层就容易出现乱码,且难以复现。

相关推荐