✒️在上一篇中我们介绍了 MySQL数据库的安装与配置,这一篇我们开始正式学习MySQL
⚽上一篇链接:【MySQL进阶之路丨第二篇】数据库的安装与配置
✒️由于学习 MySQL 管理可以让你了解如何创建、管理和优化数据库,以及如何进行数据的存储、检索和更新等操作。所以这一篇我们要讲的是【MySQL管理与连接】
【MySQL进阶之路丨第三篇】MySQL管理与连接
-
- 1️⃣MySQL管理
-
- ⭐启动和关闭 MySQL 服务器:
- ⭐管理MySQL的命令
- ⭐MySQL用户设置
- 2️⃣MySQL连接
- 3️⃣总结
1️⃣MySQL管理
⭐启动和关闭 MySQL 服务器:
Windows 系统下:
启动 MySQL 服务器: ✔️
- 打开命令提示符(cmd)。
- 输入以下命令,将会切换到 MySQL 安装目录的
bin
目录:cd C:mysqlbin
如果你的 MySQL 安装目录不同,请相应地修改命令中的路径。
- 输入以下命令启动 MySQL 服务器:
mysqld --console
这将以控制台方式启动 MySQL 服务器,并在命令提示符窗口显示服务器的输出信息。
关闭 MySQL 服务器: ✔️
- 打开命令提示符(cmd)。
- 输入以下命令,将会切换到 MySQL 安装目录的
bin
目录:cd C:mysqlbin
如果你的 MySQL 安装目录不同,请相应地修改命令中的路径。
- 输入以下命令关闭 MySQL 服务器:
mysqladmin -uroot shutdown
如果你使用了不同的用户名和密码,请将命令中的 “root” 替换为正确的用户名。系统会提示你输入密码,输入正确的密码后按回车即可关闭 MySQL 服务器。
Linux 系统下:
启动 MySQL 服务器: ✔️
- 打开终端。
- 输入以下命令,将会切换到 MySQL 安装目录的
bin
目录:cd /usr/bin
如果你的 MySQL 安装目录不同,请相应地修改命令中的路径。
- 输入以下命令启动 MySQL 服务器:
./mysqld_safe &
这将以后台方式启动 MySQL 服务器。
关闭 MySQL 服务器: ✔️
- 打开终端。
- 输入以下命令,将会切换到 MySQL 安装目录的
bin
目录:cd /usr/bin
如果你的 MySQL 安装目录不同,请相应地修改命令中的路径。
- 输入以下命令关闭 MySQL 服务器:
./mysqladmin -u root -p shutdown
然后,系统会要求你输入 root 用户的密码,输入正确的密码后按回车即可关闭 MySQL 服务器。
⭐管理MySQL的命令
在使用 MySQL 数据库时,有一些常用的命令可以帮助你执行各种操作。以下是一些常见的 MySQL 命令:
-
连接到 MySQL 数据库: ⚓
mysql -u username -p
这将连接到 MySQL 数据库,并要求输入密码。
-
显示数据库列表: ⚓
show databases;
-
创建数据库: ⚓
create database database_name;
-
选择要使用的数据库: ⚓
use database_name;
-
显示当前数据库中的表: ⚓
show tables;
-
创建表: ⚓
create table table_name ( column1 datatype, column2 datatype, ... );
-
插入数据: ⚓
insert into table_name (column1, column2, ...) values (value1, value2, ...);
以下是向 “users” 表中插入一条数据的示例:
INSERT INTO users (name, email)
VALUES ('John Doe', 'johndoe@example.com');
在上述示例中,我们使用了 INSERT INTO
语句来指定表名和要插入的列。然后,使用 VALUES
关键字指定要插入的实际值。在这个例子中,我们插入了一个名为 “John Doe” 的用户,电子邮件地址为 “johndoe@example.com”。
如果你想插入多行数据,可以使用类似的语法,并在 VALUES
子句中指定多个值集合。例如:
INSERT INTO users (name, email)
VALUES ('John Doe', 'johndoe@example.com'),
('Jane Smith', 'janesmith@example.com'),
('Bob Johnson', 'bobjohnson@example.com');
上述示例会将三个用户的信息插入到 “users” 表中。
需要注意的是,如果表中定义了其他列,但你没有在 INSERT INTO
语句中指定对应的值,那么这些列将采用默认值(如果有)或者为空值(如果允许)。另外,如果你的表中定义了自增的主键列,将自动生成唯一的 ID 值,无需手动指定。
-
查询数据: ⚓
select * from table_name;
-
更新数据: ⚓
update table_name set column1 = value1, column2 = value2, ... where condition;
-
删除数据: ⚓
delete from table_name where condition;
示例如下:
DELETE FROM users
WHERE name = 'John Doe' AND email = 'johndoe@example.com';
在上述示例中,我们使用了 DELETE FROM
语句来指定要删除数据的表名。然后,使用 WHERE
子句来指定删除数据的条件。在这个例子中,我们删除了姓名为 “John Doe”、电子邮件地址为 “johndoe@example.com” 的用户数据。
如果你想删除表中的所有数据,可以只使用 DELETE FROM
语句而不带 WHERE
子句。例如:
DELETE FROM users;
上述示例将删除 “users” 表中的所有数据,但不会删除表结构。
-
删除表: ⚓
drop table table_name;
如下图,我们删除了users表:
-
删除数据库: ⚓
drop database database_name;
-
查询特定列: ⚓
select column1, column2 from table_name;
-
排序查询结果: ⚓
select * from table_name order by column_name;
-
连接多个表: ⚓
select * from table1 join table2 on table1.column = table2.column;
-
创建索引: ⚓
create index index_name on table_name (column1, column2, ...);
-
备份数据库: ⚓
mysqldump -u username -p database_name > backup.sql
-
恢复数据库: ⚓
mysql -u username -p database_name
-
查看当前 MySQL 版本: ⚓
select version();
-
退出 MySQL: ⚓
exit;
请注意,在上述命令中, 部分命令需要根据具体实际进行操作
需要将 username
替换为你的 MySQL 用户名,database_name
替换为你的数据库名称,table_name
替换为你的表名称,column1, column2
替换为你的列名称,value1, value2
替换为你要插入的值,condition
是用于指定更新或删除操作的条件。
⭐MySQL用户设置
在 MySQL 中,用户的设置涉及到创建用户、授予用户权限以及管理用户的过程。以下是一些关于 MySQL 用户设置的常用命令:
- 创建用户:▶️
CREATE USER 'username'@'localhost' IDENTIFIED BY 'password';
这将创建一个名为
username
的用户,并设置对应的密码。
如图,我们创建了一个名为qiu且密码为qiu的用户
- 授予用户权限:▶️
GRANT ALL PRIVILEGES ON database_name.* TO 'username'@'localhost';
这将授予用户对指定数据库中所有表的全部权限。你也可以使用
GRANT
命令来授予特定的权限,例如SELECT
、INSERT
、UPDATE
、DELETE
等。
如图,我们授予qiu用户在所有表的全部权限
- 撤销用户权限:▶️
REVOKE ALL PRIVILEGES ON database_name.* FROM 'username'@'localhost';
这将撤销用户对指定数据库中所有表的全部权限。同样,你可以使用
REVOKE
命令来撤销特定的权限。
如图,我们撤销qiu用户在所有表的全部权限
- 刷新权限:▶️
FLUSH PRIVILEGES;
这个命令用于刷新权限并使其立即生效。
- 删除用户:▶️
DROP USER 'username'@'localhost';
这将删除指定的用户。
如图,我们删除了指定用户qiu
⚡请注意,在上述命令中,需要将 username
替换为你要创建或删除的用户名,localhost
表示允许用户从本地连接到 MySQL 数据库。你还可以用其他主机名或 IP 地址代替 localhost
⚡
✈️此外,你可以为用户指定更细粒度的权限,例如控制用户对特定表或列的访问权限、创建存储过程和触发器的权限等。 ✈️
具体的命令和语法可以参考 MySQL 官方文档和手册。
地址链接: MySQL官方文档和手册✈️
2️⃣MySQL连接
MySQL连接的连接方式主要有两种,PHP 脚本连接 MySQL
和 mysql二进制方式
连接。
❗PHP 脚本连接 MySQL
PHP 提供内置函数和扩展来实现MySQL数据库的连接
具体步骤如下:
-
配置数据库连接参数: ❄️
在 PHP 脚本中,你需要指定一些配置参数,包括数据库服务器地址、用户名、密码和数据库名称。可以将这些参数存储在变量中,方便后续使用。 -
创建数据库连接对象: ❄️
使用mysqli
或 PDO 扩展提供的函数来创建数据库连接。示例如下:// 使用 mysqli 扩展 $conn = new mysqli($servername, $username, $password, $dbname); // 使用 PDO 扩展 $dsn = "mysql:host=$servername;dbname=$dbname"; $conn = new PDO($dsn, $username, $password);
在此步骤中,你可以通过连接对象获取对数据库的句柄,以便后续进行操作。
-
检查连接是否成功: ❄️
可以使用以下代码来检查连接是否成功:// 使用 mysqli 扩展 if ($conn->connect_error) { die("连接失败: " . $conn->connect_error); } // 使用 PDO 扩展 if (!$conn) { die("连接失败"); }
如果连接失败,你可以选择在这里输出错误消息并终止脚本执行。
-
执行查询语句: ❄️
使用query()
方法执行 SQL 查询语句。示例如下:$sql = "SELECT * FROM your_table"; $result = $conn->query($sql);
这将执行查询并返回结果集。
-
处理查询结果: ❄️
通过遍历结果集并提取数据,你可以对查询结果进行处理。示例如下:if ($result->num_rows > 0) { while($row = $result->fetch_assoc()) { // 处理每行数据 } }
在循环中,你可以使用
$row
变量访问每个字段的值,并对其进行处理。 -
关闭数据库连接: ❄️
在完成所有数据库操作后,使用以下代码来关闭数据库连接:// 使用 mysqli 扩展 $conn->close(); // 使用 PDO 扩展 $conn = null;
这将释放服务器资源并终止与数据库的连接。
‼️mysql二进制方式连接
当使用二进制方式连接 MySQL 数据库时,可以按照以下步骤进行操作:
-
打开终端或命令行界面:😃
打开终端(对于 macOS 和 Linux)或命令提示符(对于 Windows),以便在命令行界面中执行连接命令。 -
输入连接命令:😃
在命令行界面中,输入以下命令来建立二进制连接:mysql --user=your_username --password=your_password --host=your_host --port=your_port
将上述命令中的
your_username
、your_password
、your_host
和your_port
替换为你实际的连接参数。例如,如果要连接本地 MySQL 服务器,默认端口为 3306,用户名为 root,密码为 password,可以使用以下命令:
mysql --user=root --password=password --host=localhost --port=3306
-
输入密码:😃
执行连接命令后,系统会提示你输入密码。输入正确的密码,然后按下回车键。 -
连接成功:😃
如果连接参数正确,并且 MySQL 服务器正在运行并接受连接,你将成功建立一个与数据库的二进制连接。此时,你将看到一个提示符,表示你已连接到 MySQL 服务器。 -
执行 SQL 查询:😃
在连接成功后,你可以在命令行界面中执行 SQL 查询语句。例如,你可以执行以下查询语句来显示所有数据库:SHOW DATABASES;
通过执行其他 SQL 查询和操作,你可以对数据库进行读取、写入和更新等操作。
-
退出连接:😃
当完成数据库操作后,你可以使用以下命令退出二进制连接:EXIT;
或者简单地按下 Ctrl + D(对于 macOS 和 Linux)或 Ctrl + Z(对于 Windows)来退出连接。
3️⃣总结
以上为 【MySQL进阶之路丨第三篇】MySQL管理与连接
后续将分享 【MySQL进阶之路丨第四篇】命令行与可视化工具 ✔️
我是秋说,我们下次见😉。