作为一个常年混迹在开发者社区的老鸟,我见过太多新手在搭建开发环境时踩坑。Ubuntu20.04 LTS(长期支持版)可以说是目前最稳定的Linux发行版之一,特别适合作为本地开发环境的基础系统。它自带的MySQL 8.0版本不仅性能比老版本提升明显,还支持窗口函数、CTE等现代SQL特性,完全能满足个人开发需求。
我去年接手一个学生项目时,发现团队里有人用Windows装MySQL,结果整天被字符集问题和权限问题困扰。后来统一迁移到Ubuntu20.04后,这些问题全都消失了。Linux环境下MySQL的运行效率更高,配合Workbench这个官方图形工具,开发体验直接拉满。更重要的是,这个组合完全免费,对个人开发者特别友好。
在动手安装之前,我强烈建议先更新系统。这个习惯帮我避开了很多奇怪的依赖冲突问题。打开终端(Ctrl+Alt+T)执行:
bash复制sudo apt update && sudo apt upgrade -y
更新完成后,检查是否已有旧版MySQL残留。我就遇到过之前测试安装没卸载干净导致冲突的情况:
bash复制dpkg -l | grep mysql
如果发现有残留,可以用sudo apt purge mysql*彻底清理。另外建议安装这些基础依赖:
bash复制sudo apt install gnupg wget -y
MySQL 8.0对硬件要求其实不高,但根据我的经验:
可以用free -h和df -h检查当前资源情况。如果是在虚拟机上操作,记得先分配好资源再继续。
Ubuntu20.04的仓库已经包含MySQL 8.0,安装特别简单:
bash复制sudo apt install mysql-server -y
安装完成后,系统会自动创建mysql用户和所需目录。这里有个小技巧:安装时终端输出会显示生成的随机root密码,但Ubuntu20.04默认使用auth_socket认证,其实不需要这个密码。我建议先启动服务看看状态:
bash复制sudo systemctl start mysql
sudo systemctl status mysql
看到绿色的"active (running)"就说明服务起来了。如果启动失败,可以检查/var/log/mysql/error.log找原因。
MySQL安装好后默认配置很不安全,必须运行安全脚本:
bash复制sudo mysql_secure_installation
这个交互式脚本会引导你完成几个关键设置:
我去年帮一个创业公司排查数据泄露,发现就是因为没运行这个脚本,导致匿名用户能访问生产数据库。血泪教训啊!
编辑MySQL配置文件调整字符集:
bash复制sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
在[mysqld]段落下添加:
ini复制character_set_server=utf8mb4
collation_server=utf8mb4_unicode_ci
default_authentication_plugin=mysql_native_password
保存后重启服务:
bash复制sudo systemctl restart mysql
这里用utf8mb4而不是utf8,是因为MySQL的utf8其实是阉割版,不支持完整的4字节UTF-8编码(比如emoji)。这个坑我踩过,后来迁移数据库特别麻烦。
现在可以用root登录了:
bash复制mysql -u root -p
输入刚才设置的密码后,你会看到mysql>提示符。这里分享一个我常用的初始化脚本:
sql复制-- 创建开发数据库
CREATE DATABASE dev_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- 创建专用用户
CREATE USER 'dev_user'@'%' IDENTIFIED BY 'YourSecurePassword123!';
-- 授予权限
GRANT ALL PRIVILEGES ON dev_db.* TO 'dev_user'@'%';
-- 立即生效
FLUSH PRIVILEGES;
注意几点:
新开一个终端测试连接:
bash复制mysql -u dev_user -p -h 127.0.0.1 dev_db
能成功登录说明配置正确。如果失败,可以检查:
SHOW GRANTS FOR 'dev_user'@'%';SELECT @@bind_address;sudo ufw status虽然可以用apt直接安装,但我推荐从MySQL官网下载最新版:
bash复制wget https://dev.mysql.com/get/mysql-apt-config_0.8.22-1_all.deb
sudo dpkg -i mysql-apt-config_0.8.22-1_all.deb
sudo apt update
sudo apt install mysql-workbench-community -y
安装完成后,在应用菜单就能找到Workbench。第一次启动可能会提示缺少libproj等依赖,按提示安装即可:
bash复制sudo apt install libproj-dev libzip-dev
启动Workbench后,点击"+"新建连接:
点击"Test Connection"测试,成功后会显示版本信息。这里有个实用技巧:在连接配置页的"Advanced"标签里,可以设置"Others"参数:
ini复制OPT_LOCAL_INFILE=1
default-character-set=utf8mb4
这样能避免后续导入数据时的字符集问题。
Workbench左侧导航栏有几个超实用的功能:
我特别喜欢它的SQL编辑器,智能补全比命令行方便太多。试试执行:
sql复制USE dev_db;
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(50) NOT NULL,
email VARCHAR(100) UNIQUE,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
INSERT INTO users (username, email) VALUES ('test', 'test@example.com');
右键点击表名选择"Select Rows"就能看到插入的数据。Workbench还支持ER图设计,这对理解复杂业务逻辑特别有帮助。
对于开发机,建议调整这几个参数(编辑my.cnf):
ini复制[mysqld]
innodb_buffer_pool_size = 256M
innodb_log_file_size = 128M
max_connections = 50
query_cache_type = 0
重启后可以用Workbench的"Performance Dashboard"查看效果。注意不要在生产环境直接使用这些配置!
开发环境虽然不重要,但定期备份能省去很多麻烦。我常用这个命令做每日备份:
bash复制mysqldump -u dev_user -p dev_db | gzip > ~/dev_db_backup_$(date +%F).sql.gz
添加到cron里实现自动化:
bash复制crontab -e
添加一行(每天凌晨3点备份):
0 3 * * * /usr/bin/mysqldump -u dev_user -p'密码' dev_db | gzip > /path/to/backup_$(date +\%F).sql.gz
遇到连接问题时,可以按这个流程排查:
sudo systemctl status mysqlsudo tail -f /var/log/mysql/error.logmysql -u dev_user -psudo netstat -tulnp | grep 3306SHOW GRANTS FOR 'dev_user'@'%';我遇到最多的问题是权限配置错误和字符集不匹配,用上面的方法基本都能解决。