MySQL 是一个关系型数据库管理系统。管理系统,意味着 MySQL 本身不是数据库,而是用来管理数据库的一种软件。利用 MySQL,可以创建众多数据库,这些数据库都统一由 MySQL 来管理。每个数据库可以有不同的访问用户,有不同的权限控制策略。
宏观结构上,MySQL 通过 “(数据)库 –> (数据)表 –> (数据)字段” 三级结构来管理各种数据,使用 MySQL 时,也是通过这个结构来逐层深入。
0x01 连接 MySQL
成功连接上 MySQL 是所有后续操作的前提。
mysql -u username -p;
注:符号(;)是指令的一部分。
0x02 对各个数据库的管理
0x021 对(数据)库的操作
查看所有数据库:
show databases;
新增一个数据库
CREATE DATABASE databasename(如 wordpress) ;
删除一个数据库
DROP DATABASE databasename(如 wordpress) ;
选中一个数据库;
use wordpress;
选中 wordpress 数据库以备后续进一步操作;
0x022 对(数据)表的操作
查看选中数据库中的所有数据表
show tables;
查看表结构
desc wordpress;
查看 wordpress 表的表结构。
desc 可理解为 decription 的简写,desc 指令查看(数据)表中的字段结构。
0x023 对(数据)字段的操作
可以使用通用的 sql 语句对数据表中的字段进行各种操作。
查看表中的所有内容(字段和字段值)
select * from table_name ;
查看表中某个、某几个字段(某列、某几列)的内容
select column, column from table_name ;
查看表中某个特定记录中的某字段的值
select 期望字段(我们想看到的) from 目标表 where 记录选择条件
select option_value from wp_options where option_name=’siteurl’;
查看wp_options表中,option_name的值为siteurl的记录中,option_value的值
更新表中某个特定记录中的某字段的值
update 目标表 set 期望字段=‘期望值’(我们想改变的) where 记录选择条件
update wp_options set option_value=’192.168.1.100′
where option_name =’siteurl’ or option_name=’home’
0x024 数据库的迁移
数据库迁移是指将 MySQL 内的数据库从一台服务器迁移到另一台服务器,或者从一个环境迁移到另一个环境的过程。通常是为了升级服务器、增加存储空间、提高性能或改变数据库架构。
MySQL 数据库迁移有多种方法,常用方法如下:
使用 mysqldump 导出和导入
1、导出数据:在需要迁移的服务器上,使用 mysqldump 命令导出数据库。
mysqldump -u 用户名 -p密码 数据库名 > 导出文件名.sql
注意:
- 如果数据库非常大,或者包含大量的表,可以使用 –single-transaction 选项来避免锁定表,这对于InnoDB 存储引擎特别有用。
- 使用 –quick 选项可以减少内存的使用,特别适用于大型表。
- 使用 –lock-tables=false 可以避免在导出过程中锁定表,但这可能增加数据不一致的风险。
2、传输文件:将导出的 SQL 文件传输到目标服务器。
以使用 scp 指令为例,
scp 导出文件名.sql 用户@目标服务器 : /path/to/destination/
3、导入数据:在目标服务器上,使用 mysql 命令导入 SQL 文件。
mysql -u 用户名 -p密码 数据库名 < 导入文件名.sql
注意:
- 如果导入的数据库已经存在并且包含数据,可先在目标数据库上执行一些清理操作,如删除旧数据或重置表。
- 使用 –force 选项可以忽略一些错误,但这可能会导致数据不一致。
- 如果导入过程中遇到权限问题,确保目标数据库的用户有足够的权限来创建表和插入数据。
mysqldump 方法的优点:
- 迁移过程不影响源数据库:导出操作是读取操作,不会对源数据库造成性能影响。
- 导出的 sql 文件便于传输和存储:sql 文件通常是文本格式,易于传输和备份。
- 灵活性高:可以在不同的 MySQL 版本和操作系统之间迁移数据。
mysqldump 方法的缺点:
- 导入速度较慢:特别是对于大型数据库,导入过程可能需要很长时间。
- 数据量大时可能导致磁盘空间不足:导出的 sql 文件可能会非常大,需要足够的存储空间。
- 数据一致性风险:在导出和导入过程中,如果源数据库有数据写入,可能会导致数据不一致。
0x03 用户管理
MySQL 的所有用户信息存储在 mysql.user
表中。
查看用户信息
查看用户及其允许连接的主机
select user, host from mysql.user ;
查看特定用户的权限
show GRANTS FOR ‘username’@‘host’ ;
show GRANTS FOR CURRENT_USER ;
新增用户
CREATE USER username@host ;
给用户设置密码
SET PASSWORD FOR username = PASSWORD(“password“) ;
给用户配置数据库访问权限
GRANT ALL PRIVILEGES ON databasename.* TO username IDENTIFIED BY”password” ;
FLUSH PRIVILEGES ;
0x04 退出 MySQL
exit;
或
\ q;