在Linux系统下使用MySQL是许多开发者和运维人员的必备技能,本文将从安装配置、基础操作、用户管理、数据操作及备份恢复等方面详细介绍,帮助用户快速上手。
安装与配置MySQL
不同Linux发行版的安装命令略有差异,以Ubuntu/Debian和CentOS/RHEL为例:
-
Ubuntu/Debian:
更新包列表后安装:sudo apt update && sudo apt install mysql-server
安装后启动服务并设置开机自启:sudo systemctl start mysql && sudo systemctl enable mysql
运行安全配置脚本(建议首次安装时执行):sudo mysql_secure_installation
,根据提示设置root密码、移除匿名用户、禁止远程root登录等。 -
CentOS/RHEL:
安装MySQL社区版:sudo yum install mysql-server
启动服务并自启:sudo systemctl start mysqld && sudo systemctl enable mysqld
同样执行安全配置脚本:sudo mysql_secure_installation
连接MySQL与基础命令
安装完成后,可通过命令行连接MySQL:mysql -u root -p
(输入root密码进入)
进入MySQL后,常用基础命令如下(部分命令可通过表格对比记忆):
命令分类 | 命令示例 | 功能说明 |
---|---|---|
数据库操作 | SHOW DATABASES; |
列出所有数据库 |
CREATE DATABASE mydb; |
创建名为mydb的数据库 | |
USE mydb; |
切换到mydb数据库 | |
表操作 | SHOW TABLES; |
列出当前数据库的所有表 |
CREATE TABLE users (id INT, name VARCHAR(20)); |
创建users表,包含id和name字段 | |
查询与退出 | SELECT VERSION(); |
查看MySQL版本号 |
EXIT; 或 QUIT; |
退出MySQL命令行 |
用户与权限管理
MySQL的安全性依赖于严格的权限控制,需合理创建用户并分配权限:
-
创建用户:
CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password';
(创建仅本地可登录的用户,密码为’password’) -
授权:
GRANT SELECT, INSERT ON mydb.* TO 'newuser'@'localhost';
(授予newuser对mydb数据库所有表的查询和插入权限)GRANT ALL PRIVILEGES ON *.* TO 'admin'@'%' WITH GRANT OPTION;
(授予admin对所有数据库的所有权限,并允许授权其他用户,’%’表示任意主机) -
刷新权限:
修改权限后需执行FLUSH PRIVILEGES;
使配置生效。 -
修改/删除用户:
修改密码:ALTER USER 'newuser'@'localhost' IDENTIFIED BY 'newpass';
删除用户:DROP USER 'newuser'@'localhost';
数据操作(CRUD)
MySQL的核心是对数据的增删改查(CRUD):
-
插入数据(Create):
INSERT INTO users (id, name) VALUES (1, 'Alice');
-
查询数据(Read):
SELECT * FROM users;
(查询所有字段)SELECT name FROM users WHERE id = 1;
(查询id为1的用户名) -
更新数据(Update):
UPDATE users SET name = 'Bob' WHERE id = 1;
-
删除数据(Delete):
DELETE FROM users WHERE id = 1;
备份与恢复
数据备份是运维的关键,常用工具为mysqldump
:
-
备份数据库:
全量备份:mysqldump -u root -p --all-databases > all_backup.sql
单库备份:mysqldump -u root -p mydb > mydb_backup.sql
-
恢复数据库:
mysql -u root -p mydb < mydb_backup.sql
(将备份文件恢复到mydb数据库)
常见问题处理
-
忘记root密码:
- 停止MySQL服务:
sudo systemctl stop mysql
- 跳过权限表启动:
sudo mysqld_safe --skip-grant-tables &
- 无密码登录:
mysql -u root
- 修改密码:
UPDATE mysql.user SET authentication_string=PASSWORD('newpass') WHERE User='root';
- 刷新权限并重启服务:
FLUSH PRIVILEGES;
,sudo systemctl restart mysql
- 停止MySQL服务:
-
无法远程连接:
检查防火墙是否开放3306端口(Ubuntu:sudo ufw allow 3306
;CentOS:sudo firewall-cmd --add-port=3306/tcp --permanent
),并确保MySQL配置文件/etc/mysql/mysql.conf.d/mysqld.cnf
中bind-address
设置为0.0.0
(允许任意主机连接)。
FAQs
Q1:如何查看MySQL的版本信息?
A1:进入MySQL命令行后执行SELECT VERSION();
,或在终端执行mysql --version
或sudo mysql -e "SELECT VERSION();"
。
Q2:如何允许远程用户连接MySQL?
A2:1. 创建远程用户:CREATE USER 'remoteuser'@'%' IDENTIFIED BY 'password';
;2. 授权:GRANT ALL PRIVILEGES ON *.* TO 'remoteuser'@'%';
;3. 刷新权限:FLUSH PRIVILEGES;
;4. 修改配置文件bind-address = 0.0.0.0
并重启MySQL服务。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/20508.html