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