MySQL 入门:从安装到实战操作
MySQL 作为一款广泛应用的关系数据库管理系统(RDBMS),在后端开发领域占据着举足轻重的地位。无论是小型项目的本地数据存储,还是大型企业级应用的数据管理,MySQL 都展现出强大的功能与适应性。走进 MySQL 的世界,从基础安装、配置,到数据库建模、编程连接。
一、MySQL 架构初相识
在深入学习之前,先了解下 MySQL 的基本架构。它主要由数据库服务器、数据库以及数据表组成。数据库服务器如同一个数据仓库,存储着多个数据库;每个数据库又像是一个装满文件柜的房间,存放着多个表格;而数据表就是具体存储数据的地方,一行行数据整齐排列。当客户端发起请求时,会先通过 login 连接到 node server(这里承载着业务逻辑的实现代码),然后经过 select 操作,向 db server 获取所需数据,它们之间通过网络连接,协同工作,保障数据的流畅交互。
二、MySQL 安装与配置
- 安装:在 Ubuntu 系统下,安装 MySQL 非常便捷,只需一条命令:
sudo apt install mysql-server
- 配置:安装完成后,为保障安全性,需进行一些关键配置。
sudo mysql_secure_installation
按照提示操作:
- Remove anonymous users? (Press y|Y for Yes, any other key for No) :
y:移除匿名用户,避免潜在安全风险。 - Disallow root login remotely? (Press y|Y for Yes, any other key for
No) :
y:禁止 root 远程登录,防止外部非法访问。 - Remove test database and access to it? (Press y|Y for Yes, any other
key for No) :
n:这里根据需求选择是否移除测试数据库,示例中保留。 - Reload privilege tables now? (Press y|Y for Yes, any other key for
No) :
y:重新加载权限表,使配置生效。
- 查看状态与运行:
systemctl status mysql.service
可查看 MySQL 服务的运行状态。要进入 MySQL 命令行界面,运行:
sudo mysql -u root -p
三、基础操作进阶
- 查看数据库:进入 MySQL 命令行后,可用以下命令查看已有数据库:
show databases;
show schemas;
- 本地连接配置:若要通过本地 Workbench 连接 MySQL,需修改配置。
sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
将bind-address = 127.0.0.1修改为bind-address = 0.0.0.0,让 MySQL 监听所有 IP 地址。然后重启服务:
sudo systemctl restart mysql
并且允许 3306 端口通过防火墙:
sudo ufw allow 3306
sudo ufw reload
- 用户管理:创建一个新用户用于本地访问:
create user 'admin'@'%' identified by 'WKFlove1998!';
查看用户:
select Host,User from user;
赋予权限:若只想赋予查询权限:
grant select on mysql.* to 'admin'@'%';
若赋予所有权限:
grant all privileges on *.* to 'admin'@'%';
最后刷新权限使其生效:
flush privileges;
四、数据库建模实战
数据库建模是构建合理数据库结构的关键步骤。
DROP DATABASE KING_DB; #删除数据库,谨慎操作
CREATE DATABASE KING_DB; #创建新数据库
SHOW DATABASES;
USE KING_DB; #切换使用新建的数据库
CREATE TABLE TBL_USER( #创建user表,包含用户ID、姓名、性别字段
U_ID INT PRIMARY KEY AUTO_INCREMENT,
U_NAME VARCHAR(32),
U_GENDER VARCHAR(8)
);
SHOW TABLES; #查看当前数据库下的所有表
五、数据库编程连接与数据插入
- 环境准备:在服务器终端安装 mysql 开发包:
sudo apt-get install libmysqlclient-dev
- 代码编写:
- 引入头文件:
#include <mysql.h>
// C U R D --> create update read delete
- 宏定义关键信息,如数据库服务器 IP、端口、用户名、密码、默认数据库等:
#define KING_DB_SERVER_IP "192.168.233.128"
#define KING_DB_SERVER_PORT 3306
#define KING_DB_USERNAME "admin"
#define KING_DB_PASSWORD "WKFlove1998!"
#define KING_DB_DEFAULTDB "KING_DB"
#define SQL_INSERT_TBL_USER "INSERT TBL_USER(U_NAME, U_GENDER) VALUES('fyq', 'woman');"
- 主函数实现连接与插入操作:
int main() {
MYSQL mysql;//创建操控杆
if (NULL == mysql_init(&mysql)) { //初始化
printf("mysql_init: %s\n", mysql_error(&mysql));
return -1;
}
if (!mysql_real_connect(&mysql, KING_DB_SERVER_IP, KING_DB_USERNAME, KING_DB_PASSWORD,
KING_DB_DEFAULTDB, KING_DB_SERVER_PORT, NULL, 0)) {
printf("mysql_real_connect: %s\n", mysql_error(&mysql));
return -2;
}
if (mysql_real_query(&mysql, SQL_INSERT_TBL_USER, strlen(SQL_INSERT_TBL_USER))) {
printf("mysql_real_query: %s\n", mysql_error(&mysql));
}
mysql_close(&mysql);
return 0;
}
通过以上步骤,、搭建起 MySQL 的学习框架,无论是基础运维,还是简单的开发应用,都能轻松上手。后续随着深入学习,MySQL 还有更多高级特性等待探索!
https://github.com/0voice