当前位置: 首页 > news >正文

ubuntu 安装mysql

在 Ubuntu 系统中安装 MySQL 的步骤如下:

步骤 1:更新软件包列表

sudo apt update

步骤 2:安装 MySQL 服务器

sudo apt install mysql-server -y

Ubuntu 22.04/20.04 默认安装 MySQL 8.0,早期版本可能默认使用 MariaDB。

如果需要指定旧版本(如 MySQL 5.7),需添加第三方仓库(见文末“扩展说明”)。

步骤 3:初始化安全配置

运行安全脚本,设置 root 密码并移除不安全配置:

sudo mysql_secure_installation

根据提示完成以下操作:

选择密码强度验证策略(默认按 ENTER 跳过)。

设置 root 用户的密码。

删除匿名用户(选择 Y)。

禁止 root 远程登录(选择 Y)。

删除测试数据库(选择 Y)。

重新加载权限表(选择 Y)。

步骤 4:验证 MySQL 服务状态

sudo systemctl status mysql

正常输出应显示 active (running)。

步骤 5:登录 MySQL

使用 root 用户登录:

sudo mysql -u root -p

输入步骤 3 中设置的密码。

步骤 6:基本配置(可选)

1. 创建新用户和数据库

-- 创建数据库
CREATE DATABASE mydb;

-- 创建用户并设置密码
CREATE USER 'myuser'@'localhost' IDENTIFIED BY 'password';

-- 授予权限
GRANT ALL PRIVILEGES ON mydb.* TO 'myuser'@'localhost';

-- 刷新权限
FLUSH PRIVILEGES;

2. 允许远程访问

修改配置文件:

sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf

找到 bind-address 并改为:

bind-address = 0.0.0.0

重启 MySQL:

sudo systemctl restart mysql

为用户授权远程访问:

GRANT ALL PRIVILEGES ON mydb.* TO 'myuser'@'%' IDENTIFIED BY 'password';
FLUSH PRIVILEGES;

步骤 7:防火墙配置(可选)

如果启用了 ufw 防火墙,开放 MySQL 默认端口(3306):

sudo ufw allow 3306/tcp
sudo ufw reload

常见问题解决

1. 忘记 root 密码

停止 MySQL 服务:

sudo systemctl stop mysql

启动 MySQL 无密码模式:

sudo mysqld_safe --skip-grant-tables &

登录并重置密码:

FLUSH PRIVILEGES;
ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';
EXIT;

重启 MySQL 服务。

2. 服务启动失败

检查错误日志:

sudo tail -n 50 /var/log/mysql/error.log

扩展说明

1. 安装特定版本(如 MySQL 5.7)

添加 MySQL 官方仓库:

wget https://dev.mysql.com/get/mysql-apt-config_0.8.28-1_all.deb
sudo dpkg -i mysql-apt-config_0.8.28-1_all.deb

(安装过程中选择所需版本)

更新并安装:

sudo apt update
sudo apt install mysql-server=5.7.* -y

2. 完全卸载 MySQL

sudo apt purge mysql-server mysql-client mysql-common
sudo rm -rf /etc/mysql /var/lib/mysql
sudo apt autoremove

后续操作建议

定期备份:使用 mysqldump 备份数据库:

mysqldump -u root -p mydb > mydb_backup.sql

监控工具:安装 mytop 或 phpMyAdmin 管理数据库。

性能优化:调整 my.cnf 配置文件(如缓存大小、连接数)。

通过以上步骤,你可以在 Ubuntu 系统上快速部署并配置 MySQL。

http://www.dtcms.com/a/99590.html

相关文章:

  • Python 中列表(List)、元组(Tuple)、集合(Set)和字典(Dict)四大数据结构的完整对比
  • macOS Jdk1.8安装(目前主流版本的jdk)
  • 【漫话机器学习系列】163.方差膨胀因子(Variance Inflation Factor, VIF)
  • Spring 通过多种方式实现使用线程
  • 在用redis当中可能遇到的问题解决方案以及redis中的一些名词解释
  • HTML 标签类型全面介绍
  • docker-compese 启动mysql8.0.36与phpmyadmin,并使用web连接数据库
  • Reactive编程:数据流和观察者
  • MySQL多表查询实验
  • c++-引用
  • 【STM32】WDG看门狗(学习笔记)
  • 积分赛——串口控制指示灯
  • MySQL排序详解
  • vue3 响应式系统指南
  • 无人机中继传输数据链技术,(无人机+自组网)远距离传输技术实现详解
  • 大唐杯02 DTM.PX4.016
  • 企业级知识库建设:自建与开源产品集成的全景解析 —— 产品经理、CTO 与 CDO 的深度对话
  • Python基础知识第二天:从格式化到流程控制
  • VSCode Java 单元测试没有运行按钮
  • 代码随想录day2 数组总结
  • 03-SpringBoot3入门-配置文件(自定义配置及读取)
  • Centos 7 搭建 jumpserver 堡垒机
  • Nginx 解决具有不安全、不正确或缺少 SameSite 属性的 Cookie方案
  • IPD流程:科技企业IPD流程培训稿
  • 独立站系统:架构设计、功能实现与用户界面优化
  • 【项目合集】只能xx养殖系统,STM32、esp8266、OLED屏幕、dht11、光敏、水位、加热、风扇
  • STL性能优化实战:如何让C++程序畅快运行
  • 从代码学习数值优化算法 - 分片McCormick放松方法Python版
  • 如何使用postman调用多参数接口(包含文件上传)
  • C++ 中std::vector<T>清除方式