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

发布于:2025-09-02 ⋅ 阅读:(23) ⋅ 点赞:(0)

一、安装 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


网站公告

今日签到

点亮在社区的每一天
去签到