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

jetson开发板Ubuntu系统Docker中使用 MySQL 数据库详解-安装与配置指南

一、安装 MySQL Server

注:在docker容器root终端下,不需要sudo,直接使用命令行即可。
1、# 更新软件包列表      sudo apt update


2、# 安装MySQL Server  sudo apt install mysql-server


3、# 启动MySQL服务    sudo systemctl start mysql   # 检查运行状态  sudo systemctl status mysql


4、# 设置开机自启    sudo systemctl enable mysql

二、配置 MySQL 安全设置

# 运行安全脚本     sudo mysql_secure_installation


# 按照提示完成以下操作:
# 1. 设置root密码(强烈建议设置复杂密码)在Ubuntu系统中一般是默认使用auth_socket插件进行身份验证,不需要在这里输入密码,可以先继续执行,然后再配置密码
# 2. 移除匿名用户
# 3. 禁止root远程登录
# 4. 移除测试数据库
# 5. 重新加载权限表

三、配置 超级用户root登录密码

1、查看mysql版本 mysql --version
2、安装过程中如果没有让设置密码,直接在终端使用:sudo mysql  
系统 root 用户身份直接访问 MySQL 服务器
3、如果有需要设置密码,密码设置为  Anepower888     
4、ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '新密码';                    密码为 Anepower888  
5、刷新:FLUSH PRIVILEGES;  退出:EXIT;

6、验证密码登录,终端使用:mysql -u root -p  输入: Anepower888

注:在mysql环境下使用指令,后面以 ;结尾可以被识别

四、配置环境

1、终端下使用指令修改端口号和ip地址:sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf

2、终端下使用指令查看root用户访问权限:sudo netstat -tulpn | grep mysqld


3、查看用户和权限:SELECT User, Host FROM mysql.user;
4、查看当前用户数据库:SHOW DATABASES;


5、创建所需新数据库:CREATE DATABASE bau_system_db;
6、使用数据库:use bau_system_db;
7、输出所有数据表:SHOW TABLES;
8、在mysql终端下(1)创建用户信息数据表
CREATE TABLE system_users (
id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
username VARCHAR(50) NOT NULL UNIQUE,
password VARCHAR(100) NOT NULL,
user_type ENUM('管理员', '测试员') NOT NULL,
is_active TINYINT(1) DEFAULT 1,
create_time DATETIME DEFAULT CURRENT_TIMESTAMP
);
测试插入数据 INSERT INTO system_users (id, username, password, user_type, is_active, create_time)
VALUES
(1, 'admin', 'admin123', '管理员', 1, '2024-06-18 05:40:43'),
(2, 'tester', 'tester123', '测试员', 1, '2024-06-18 05:41:47');
(2)创建操作日志信息表
CREATE TABLE operate_logs (
id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
time DATETIME NOT NULL,
module VARCHAR(100) NOT NULL,
operator_type VARCHAR(50) NOT NULL,
operation VARCHAR(100) NOT NULL,
detail TEXT NOT NULL,
success TINYINT NOT NULL
);
(3)创建告警日志数据表
CREATE TABLE alarm_logs (
id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
cell_id VARCHAR(50) NOT NULL,
start_time DATETIME NOT NULL,
end_time DATETIME DEFAULT NULL,
duration VARCHAR(20) DEFAULT NULL,
level VARCHAR(20) NOT NULL,
position VARCHAR(50) NOT NULL,
content VARCHAR(255) NOT NULL,
error_info TEXT DEFAULT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE   CURRENT_TIMESTAMP,
INDEX (content)
); 

9、此时,所有环境已经配置完成,所需数据表已经创建完成,运行系统,如果还是无法连接数据库,有可能因为数据库还未启动,因为在docker环境下,设置开机自启暂时不起作用,可以将指令加入运行脚本中,提前运行开启数据库即可。指令为:service mysql start
还可以使用service mysql status指令查看数据库状态。

四、数据库常用指令 

1、修改数据表名称:RENAME TABLE user TO system_users;
2、修改数据表某个字段密码: UPDATE `system_users`
-> SET `password` = 'tester123'
-> WHERE `username` = 'tester' AND `user_type` = '测试员'; 
3、查看表结构:DESCRIBE user;
| Field       | Type                  | Null | Key | Default           | Extra          |
+-------------+-----------------------+------+-----+-------------------+----------------+
| id          | int                   | NO   | PRI | NULL              | auto_increment |
| username    | varchar(50)           | NO   | UNI | NULL              |                |
| password    | varchar(100)          | NO   |     | NULL              |                |
| user_type   | enum('管理员','测试员')| NO   |     | NULL              |                |
| is_active   | tinyint(1)            | YES  |     | 1                 |                |
| create_time | datetime              | YES  |     | CURRENT_TIMESTAMP |                

4、删除所有测试员用户:DELETE FROM user WHERE user_type = '测试员';
5、删除单个用户:DELETE FROM user WHERE username = 'test_user';
6、删除表:DROP TABLE IF EXISTS +表格名;
7、查看表数据:SELECT * FROM system_users;
+----+----------+-----------+-----------+-----------+---------------------+
| id | username | password  | user_type | is_active | create_time         |
+----+----------+-----------+-----------+-----------+---------------------+
|  1 | admin    | admin123  | 管理员    |         1 | 2024-06-18 05:40:43 |
|  2 | tester   | tester123 | 测试员    |         1 | 2024-06-18 05:41:47 |
+----+----------+-----------+-----------+-----------+---------------------+
8、使用vi /etc/mysql/mysql.conf.d/mysqld.cnf进行修改
bind-address = 127.0.0.1  # 只允许本地连接     port = 3306    # 使用标准端口    
这样才能共其他设备进行连接,或者代码连接数据库
9、在mysql中无法重命名数据库,只能通过创建新数据库,迁移表结构和数据
-- 1. 创建新数据库:CREATE DATABASE new_system;
-- 2. 查看原数据库中的所有表:USE login_system;  SHOW TABLES;
-- 3. 逐个将表结构和数据复制到新数据库:CREATE TABLE new_system.name LIKE login_system.name;
INSERT INTO new_system.name SELECT * FROM login_system.name;

-- 4. 确认新数据库中的数据无误后,删除原数据库(谨慎操作!)
DROP DATABASE login_system;
10、删除数据库 :DROP DATABASE [IF EXISTS] database_name;
11、删除某几条数据 DELETE FROM alarm_logs 
WHERE start_time > '2025-08-06 18:30:00' 
  AND start_time < '2025-08-06 19:00:00';
alarm_logs

五、配置远程登录mysql服务器

1、使用指令进入编辑界面 sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf  找到这里禁用127.0.0.1
配置兼容所有ip地址,也可以配置兼容特定ip。

2、如果需要远程登录jetson板子上的数据库,需要使用新的用户去操作,尽量不要直接访问root用户,在mysql服务器状态下使用CREATE USER 'db_admin'@'192.168.66.1' IDENTIFIED BY 'Ma9609031004.';创建新用户,这里的新用户IP地址是客户端ip地址,并且为新用户设置密码。使用指令GRANT SELECT, INSERT, UPDATE, DELETE ON your_database.* TO 'db_admin'@'192.168.66.1';指令赋予用户权限,使用FLUSH PRIVILEGES; 刷新权限,这里的your_database 使用已经创建的数据库名即可。进入用户查询用户权限界面,使用SELECT User, Host FROM mysql.user;编辑可以看到有哪些用户属于本地,有哪些用户允许外部访问。

六、忘记登录密码操作方式

1、停止 MySQL 服务          sudo systemctl stop mysql

2、以跳过权限检查的方式启动 MySQL  sudo mysqld_safe --skip-grant-tables &

3、使用 root 身份无密码登        mysql -u root

4、在 MySQL 命令行中执行以下语句重置密码(选择适合你版本的语句)

对于 MySQL 8.0 及以上版本
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '新密码';

5、刷新权限并退出 FLUSH PRIVILEGES;   EXIT;

6、停止 MySQL 服务          sudo systemctl stop mysql

7、正常启动 MySQL 服务        sudo systemctl start mysql

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

相关文章:

  • Python上下文管理器与资源管理
  • 基于51单片机停车场车位引导系统设计
  • 四个典型框架对比
  • 软考-操作系统-错题收集(2)文件系统的多级索引结构
  • 【重学MySQL】九十七、MySQL目录结构与文件系统解析
  • 二叉树核心操作知识点整理
  • 大模型微调显存内存节约方法
  • Java实现的IP4地址合法判断新思路
  • GPT - 5 技术前瞻与开发者高效接入路径探索​
  • 高性能客服系统源码实现
  • 文件上传漏洞基础及挖掘流程
  • 2013 NeuralIPS Translating Embeddings for Modeling Multi-relational Data
  • JAVA后端开发——MyBatis 结合 MySQL JSON 类型查询详解
  • vue组件中实现鼠标右键弹出自定义菜单栏
  • 智慧交通时代,数字孪生为何成为关键力量?
  • Map接口
  • 基于若依框架前端学习VUE和TS的核心内容
  • 手搓3D轮播图组件以及倒影效果
  • 基于STM32的ESP8266连接华为云(MQTT协议)
  • leetcode46.全排列
  • java web 练习 简单增删改查,多选删除,包含完整的sql文件demo。生成简单验证码前端是jsp
  • (Mysql)MVCC、Redo Log 与 Undo Log
  • C#知识学习-012(修饰符)
  • Python OpenCV图像处理与深度学习:Python OpenCV边缘检测入门
  • FastLED库完全指南:打造炫酷LED灯光效果
  • 【Excel】将一个单元格内​​的多行文本,​​拆分成多个单元格,每个单元格一行​​
  • 【设计模式】--重点知识点总结
  • C++ Bellman-Ford算法
  • Linux并发与竞争实验
  • 软件使用教程(四):Jupyter Notebook 终极使用指南