Ubuntu的Mysql设置
MySQL安装
解决密钥问题
获取并安装最新的 MySQL GPG 密钥
首先需要下载并导入 MySQL 官方最新的 GPG 签名密钥,执行以下命令:
1 | wget -O - https://repo.mysql.com/RPM-GPG-KEY-mysql-2022 | sudo gpg --dearmor -o /usr/share/keyrings/mysql.gpg |
或者
1 | wget -O - https://repo.mysql.com/RPM-GPG-KEY-mysql-2023 | sudo gpg --dearmor -o /usr/share/keyrings/mysql.gpg |
然后需要修改 MySQL 的源列表文件(通常是/etc/apt/sources.list.d/mysql.list),将密钥引用改为新的 keyring 文件,例如将原文件中的deb https://repo.mysql.com/apt/ubuntu/ noble mysql-8.0改为:如果提示这个不能使用,那么直接删除掉,尝试使用ubuntu官方提供的软件源更新,先查看该目录下是否有mysql.list ,有就先备份
date命令的格式符语法要求+后面紧跟格式字符串(不能有空格),否则date会把%y%m%d当成额外的操作数,从而报错。
1 | if [ -f /etc/apt/sources.list.d/mysql.list ]; then |
配置 MySQL APT 仓库(若文件不存在)
- 创建并写入 MySQL 源配置文件(适配 Ubuntu 24.04/noble,若兼容问题则改用 22.04/jammy):
1 | echo "deb [signed-by=/usr/share/keyrings/mysql.gpg] http://repo.mysql.com/apt/ubuntu/ noble mysql-8.0" | sudo tee /etc/apt/sources.list.d/mysql.list |
更新 APT 缓存完成密钥导入后,执行 APT 更新命令,验证是否解决问题:
1 | sudo apt update |
可选)若仍有问题,检查 MySQL 仓库版本兼容性Ubuntu 24.04(Noble Numbat)是较新的版本,MySQL 的 APT 仓库可能对其支持存在延迟。如果上述步骤后仍有问题,可以考虑:
- 暂时改用 Ubuntu 官方仓库中的 MySQL 包(Ubuntu 官方仓库提供
mysql-server包,版本可能略低但兼容性更好),需要注释掉/etc/apt/sources.list.d/mysql.list中的 MySQL 官方仓库条目,然后执行sudo apt update。 - 等待 MySQL 官方更新对 Ubuntu 24.04 的仓库支持,或改用 MySQL 的通用二进制包安装。
- Ubuntu 22.04 及以上版本推荐使用
signed-by参数指定密钥文件,而非apt-key(apt-key已被标记为弃用),这样更安全且符合新的 APT 规范。
执行完上述步骤后,再次运行sudo apt update,应该可以正常验证 MySQL 仓库的签名,消除该错误提示。
检查 MySQL 仓库的兼容性
Ubuntu 24.04(noble)是较新的版本,MySQL 官方的 APT 仓库可能尚未完全适配该版本。可尝试将仓库的版本代号改为 Ubuntu 22.04(jammy,MySQL 对其支持更成熟),修改mysql.list:
1 | sudo sed -i 's/noble/jammy/' /etc/apt/sources.list.d/mysql.list |
修改后执行sudo apt update,验证是否仍有密钥错误(注:此方法为临时兼容方案,若 MySQL 后续发布 noble 版本,需改回)。
1 | sudo apt clean |
增强密钥信任级别(复制到 APT 信任目录):
1 | sudo cp /usr/share/keyrings/mysql.gpg /etc/apt/trusted.gpg.d/mysql.gpg |
卸载MySQL
如果你使用的是Ubuntu的默认MySQL版本(如MySQL 5.7或更高版本),可以通过apt包管理器来卸载,别的版本请使用搜索工具。
停止MySQL服务:
1 | sudo systemctl stop mysql |
卸载MySQL:
1 | sudo apt-get remove --purge mysql-server mysql-client mysql-common mysql-server-core-* mysql-client-core-* |
清理残留配置文件:
1 | sudo apt-get autoremove \ |
Ubuntu卸载mysql-apt-config_0.8.32-1_all.deb
在Ubuntu系统中,如果你想要卸载mysql-apt-config包,可以使用以下步骤。mysql-apt-config是一个工具,用于帮助配置MySQL的APT仓库,以便安装和更新MySQL服务器和客户端软件包。
更新包列表
在卸载任何包之前,建议先更新你的包列表,以确保你正在操作的软件包是最新的。使用以下命令:
1 | sudo apt update |
卸载mysql-apt-config
接下来,使用apt-get命令来卸载mysql-apt-config。执行以下命令:
1 | sudo apt-get remove mysql-apt-config |
这条命令会卸载mysql-apt-config及其依赖,但不删除配置文件。
Ubuntu导入数据到mysql
登录MySQL
使用以下命令登录MySQL:
1 | mysql -u root -p |
输入你之前设置的root用户密码。
创建数据库和用户(如果需要)
在导入数据之前,你可能需要创建一个数据库和用户:因为数据库不包含之前的用户信息,所以数据中如果没有用户,需要创建一个用户才能导入,如果有用户直接导入到指定用户信息中
1 | CREATE DATABASE mydatabase; |
mydatabase:数据库名字
myuser:你要创建的用户名称
localhost:你的主机名称,可以是IP也可以是别的,也可以不填写,直接修改成如下格式:
1 | CREATE USER 'myuser' IDENTIFIED BY 'password'; |
password:这个数据库的密码
导入数据
使用命令行导入数据:
假设你的数据文件是.sql格式,你可以使用以下命令导入数据:
1 | mysql -u myuser -p mydatabase < /path/to/your/datafile.sql |
输入用户的密码。确保将mydatabase、myuser、/path/to/your/datafile.sql替换为实际的数据库名、用户名和文件路径。
myuser:用户名
mydatabase:待导入的数据
Ubuntu中mysql导出指定的数据库
Ubuntu中mysql自动备份数据库
在Ubuntu上定时备份MySQL数据库并自动删除旧的备份文件,你可以使用cron定时任务结合mysqldump命令来完成。下面我将详细介绍如何设置这个过程。
创建备份目录
创建一个目录用于存放备份文件,例如/backup/mysql。
1 | sudo mkdir -p /backup/mysql |
创建备份脚本
创建一个脚本文件,例如backup.sh,用于执行数据库备份。
1 | sudo nano /usr/local/bin/backup.sh |
在打开的编辑器中,输入以下内容:
1 |
|
根据你的需求调整find命令中的-mtime +7部分,以控制保留备份的天数。例如,如果你希望保留30天的备份,则使用-mtime +30。
your_database_name: 数据库名称
your_username:数据库的用户名称
your_password:数据库密码
保存并关闭文件,然后使其可执行:
1 | sudo chmod +x /usr/local/bin/backup.sh |
设置Cron定时任务
编辑crontab文件来设置定时任务:
1 | crontab -e |
在打开的编辑器中,添加以下行来每天凌晨1点执行备份脚本:
1 | 0 1 * * * /usr/local/bin/backup.sh |
检查/backup/mysql目录,确认备份文件是否正确生成并被正确删除。
注意:
确保将your_database_name, your_username, 和 your_password替换为实际的数据库名、用户名和密码。出于安全考虑,避免在脚本中直接使用密码,可以考虑使用.my.cnf文件或其他安全措施来管理MySQL凭证。例如,你可以在用户的家目录下创建.my.cnf文件,并在其中存储登录凭证。然后在脚本中使用–defaults-file=/path/to/.my.cnf选项来引用它。配置如下,只需要修改/usr/local/bin/backup.sh改文件
脚本用户名和密码使用–defaults-file=/path/to/.my.cnf,如何配置
创建.my.cnf文件
1 | sudo nano /etc/mysql/backup.cnf |
配置文件内容
1 | [client] |
替换your_username为实际用户名、your_password为实际密码,文件权限需设置为600
修改备份脚本
调整backup.sh脚本
1 |
|
错误问题
文件格式或解释器路径错误
修复行尾符问题
**若脚本在 Windows 中编辑后上传至 Linux,需转换 CRLF 为 LF 格式:
1 | sed -i 's/\r$//' /etc/mysql/backup.cnf |