MySQL 数据库

导航
返回开发工具分类

MySQL是一个关系型数据库管理系统,是后端常用的数据库系统,MySQL是开源的,可以免费下载使用。

MySQL数据库安装

MySQL安装、服务命令

以下服务命令以使用systemd的Ubuntu为例。安装MySQL服务器:

1
2
sudo apt update
sudo apt install mysql-server

启动MySQL服务

1
sudo systemctl start mysql

或

1
sudo service mysql start

重启MySQL服务

1
sudo service mysql restart

停止MySQL服务

1
sudo service mysql stop

显示MySQL状态

1
sudo service mysql status

设置MySQL服务开机自启动

1
sudo systemctl enable mysql

Ubuntu默认socket认证下,进入本机数据库:

1
sudo mysql

已创建密码认证账号时,可按实际主机和账号连接:

1
mysql -h <主机IP> -u <数据库用户名> -p

退出

1
exit

配置MySQL远程登录

修改/etc/mysql/mysql.conf.d/mysqld.cnf配置文件。

默认保留bind-address = 127.0.0.1,只允许本机访问。确需远程连接时,绑定服务器实际的私有网络地址,并配置防火墙只允许可信客户端;还需创建最小权限的业务账号,不要直接开放root远程登录。监听地址改变不等于自动获得登录权限。参见Ubuntu MySQL配置。

修改完成保存后,需要重启MySQL服务才会生效

MySQL默认端口3306

配置MySQL

运行MySQL初始化安全脚本

1
mysql_secure_installation

脚本报错

错误样例

danger
… Failed! Error: SET PASSWORD has no significance for user ‘root‘@’localhost’ as the authentication method used doesn’t store authentication data in the MySQL server. Please consider using ALTER USER instead if you want to change authentication parameters.

先检查root账号当前的认证插件,不要为了运行脚本而盲目降级认证。在Ubuntu默认socket认证配置下,可尝试使用sudo mysql管理本机数据库。

1
SELECT user, host, plugin FROM mysql.user WHERE user = 'root';

旧教程中的mysql_native_password已在MySQL 8.4默认禁用、9.0移除。是否调整root认证应结合已安装版本和实际需求,不能使用固定示例弱密码。参见MySQL认证插件文档。

常用SQL命令

展示所有数据库

1
show databases;

使用数据库

1
use <数据库名称>;

展示当前数据库所有表

1
show tables;

展示表结构

1
desc <表名称>;

Docker创建MySQL容器

下面是本机测试示例,密码需自行替换且不要复用正式凭据。环境变量可被拥有Docker管理权限的人查看;正式部署应采用受控的秘密管理和持久化卷,并固定适用的镜像版本。

1
docker run --name <MySQL容器名称> -e MYSQL_ROOT_PASSWORD=<Mysql密码> -d -p 127.0.0.1:3306:3306 mysql:8.4

MySQL数据库导入导出

下面的-p不直接跟密码,回车后交互输入,避免密码进入命令历史。原先-p <密码>写法还会把空格后的内容误当成其他参数。导入前备份目标数据库,检查SQL是否包含删除或覆盖操作。参见MySQL密码安全说明。

MySQL数据库导出数据和表结构

1
mysqldump -u <用户名> -p <数据库名> > <数据库名>.sql

MySQL数据库导出表结构

1
mysqldump -u <用户名> -p -d <数据库名> > <数据库名>.sql

MySQL数据库导入.sql文件

1
mysql -u <用户名> -p <数据库名> < <数据库名>.sql

数据库中命令方式导入

选择数据库

1
use <数据库名称>;

导入数据(注意sql文件的路径)

1
source <sql文件路径>;