Linux——MySQL数据库的使用

2023-12-13 18:48:41

访问MySQL数据库

????????MySOL数据库系统也是一个典型的C/S(客户端/服务器)架构的应用,要访问MySOL数据库 需要使用专门的客户端软件,在Linux系统中,最简单、易用的MySQL.客户端软件是其自带的mysql 命令工具。

  • 登录到MySQL服务器

经过安装后的初始化过程,MySOL数据库的默认管理员用户名为root,密码为空.

可以执行以下操作:

在有密码的情况下,还可以使用'-p'选项来进行密码效验。

  • 执行MySQL操作语句

验证成功以后将会进入提示符为‘mysql>”的数据库操作环境,用户可以输入各种操作语句对 数据库进行管理.

每条MySQL操作语句以分号 ‘;’ 表示结束,输入时可以不区分大小写。

status;?查看当前数据库服务的基本信息

show?databases;?用于查看当前MySOL服务器中包含的库,经初始化后的MySOL服务器,默认建立了四个库:test.mysql.information_schema和performance_schema(其中mysql库是mysql 正常运行所需的库,其中包含了用户认证相关的表),

执行show?databases;可以进行查看到

show?tables;用于查看当前所在的库中包含的表。在操作之前,需要先使用USE语句切换到所使用的库,例如,执行以下操作可以显示mysql库中包含的所有表

describe用于显示表的结构,即组成表的各字段(列)的信息.需要指定“库名.表名” 作为参数:若只指定表名参数,则需先通过USE语句切换到目标库。

例如.执行以下操作可以查看 mysql库中的user表的结构.与直接执行“DESCRIBE mysql.user:”语句的效果相同。

  • 退出“mysql>”?操作环境

????????在“mysql>”操作环境中,执行“exit”或“quit”命令可以退出mysql命令工具.返回原来的 Shell环境.

创建及删除库和表

1.创建新的库

CREATEDATABASE语句:用于创建一个新的库,需指定数据库名称作为参数。例如,执行以下 操作可以创建一个名为auth的库.

刚创建的数据库是空的,其中不包含任何表,在/usr/local/mysql/data 目录下会自动生成一个 与新建的库名相同的文件夹。

?2.创建新的表

CREATE TABLE 语句:用于在当前库中创建新的表,需指定数据表名称作为参数,并定义该表格 所使用的各字段,基本格式如下所示。

创建表之前,应先明确数据表格的结构、各字段的名称和类型等信息,例如,若要创建一个包含 用户名、密码字串的用户验证表,应先分析表格结构。?

上述表格中,“用户名”为不超过16字节的字符串,不能为空;“密码字串”为不超过48个字 符的字符串(插入记录时使用MySOL的函数加密).默认值为空字串。考虑到字符集兼容性,最好 不要使用中文字段名,改用user_name,user_passwd分别表示用户名、密码字串,表格中不能拥有同 名的用户.因此可将 user_name作为主键。

????????针对上述分析结果,可以在auth库中按如下操作创建users表,其中,字段定义部分的DEFAULT 语句用于设置默认的密码字串,PRIMARY语句用于设置主键字段名。

3.删除一个数据表?

DROP TABLE语句:用于删除库中的表,需要指定“库名.表名”作为参数:若只指定表名参数, 则需先通过执行“USE”语句切换到目标库,

例如,执行以下操作可以删除auth库中的users表。

4.删除一个数据库

DROP DATABASE语句:用于删除指定的库,需要指定库名作为参数,

例如,执行以下操作可以 删除名为auth的库.

管理表中的数据记录

1.插入数据记录

INSERT INTO语句:用于向表中插入新的数据记录,语句格式如下所示,

执行以下操作将会向 auth 库中的 users表插入一条记录:用户名为“zhangsan,对应的密码为 “123456”,需注意的是,VALUES部分的值应与前面指定的各字段逐一对应。

????????在插入新的数据记录时,如果这条记录完整包括表中所有字段的值,则插入语句中指定字段的 部分可以省略。例如,执行以下操作也可以向auth库中的user表插入一条新的记录:用户名为“lisi” 对应的密码为“654321“

2.查询数据记录

SELECT语句:用于从指定的表中查找符合条件的数据记录。MySOL数据库支持标准的SOL查询 语句,语句格式如下所示。

????????表示所有字段时,可以使用通配符“*”,若要显示所有的数据记录,则可以省略WHERE条件子 句.例如,执行以下操作可以查看auth库中users表内的所有数据记录,其中由于密码字串已加密 因此不会直接显示出实际的密码内容.

?????????当需要根据特定的条件查找记录时,WHERE条件子句是必不可少的,例如,若要查找users表 中用户名为“zhangsan”的记录,显示其中用户名,密码字段的信息,可以执行以下操作。

3.修改数据记录

UPDATE语句:用于修改、更新表中的数据记录,语句格式如下所示。

????????执行以下操作可以修改users表中用户名为“lisi”的记录,将密码字串设为空值,验证记录内容 可以发现 lisi 用户的密码串值已变为空白。

????????在MySOL数据库服务器中,用于访问数据库的各种用户(如root)信息都保存在mysql库的user 表中,熟练的管理员可以直接修改其中的数据记录。例如,以下操作可以将数据库用户root的密码 设为“123457”,当再次使用“mysql-u root-p”访问MySOL数据库服务器时,必须使用此密码进 行验证。

????????若是在 Linux 命令行环境中执行,还可以使用mysqladmin 工具来设置密码,命令格式为 “mysqladmin-u root-p“旧密码password“新密码“.例如.执行以下操作可将数据库用户root 的密码设置为“123456”。?

4.删除数据记录

DELETE语句:用于删除表中指定的数据记录。语句格式如下所示。

????????执行以下操作可以删除users表中用户名为“lisi”的数据记录,验证记录内容可以发现 lisi用户 的数据记录已经消失。

????????在MySOL数据库服务器中,默认添加了从本机访问数据库的来宾用户(user.password均为空). 基于数据库安全性考虑,应该删除这些来宾用户。执行以下操作显示user字段为空的用户记录,并用DELETE 语句进行该用户记录的删除。

? ? ? ? 先查看

? ? ? ? 有两个空用户记录

????????用DELETE语句删除该用户的记录

数据库用户授权?

  • 授予权限

GRANT语句:专门用来设置数据库用户的访问权限。当指定的用户名不存在时,GRANT语句将 会创建新的用户,否则,GRANT语句用于修改用户信息,语句格式如下所示,

> 权限列表:用于列出授权使用的各种数据库操作,以逗号进行分隔,如“select,insert,update". 使用all”表示所有权限,可授权执行任何操作。

>库名.表名:用于指定授权操作的库和表的名称,其中可以使用通配符“*”.例如,使用 “auth.*”表示授权操作的对象为auth库中的所有表。

>用户名@来源地址:用于指定用户名称和允许访问的客户机地址,即谁能连接、能从哪里 连接。来源地址可以是域名,P地址,还可以使用“%”通配符,表示某个区域或网段内 的所有地址,如“%.bdqn.com”“192.168.1.%”等。

>DENTIFEDBY:用于设置用户连接数据库时所使用的密码字符串.在新建用户时,若省略 “IDENTIFEDBY”部分,则用户的密码将为空。

????????执行以下操作可以添加一个名为“xiaoqi”的数据库用户,并允许其从本机访问,对auth库中的 所有表具有查询权限,验证密码为“123456”.使用GRANT语句授权的用户记录,会保存到mysql 库的user、db,host、tables_priv等相关表中,无须刷新即可生效.

????????切换到其他Shell终端,以用户xiaoqi的身份连接数据库,当执行授权的数据库操作时将被允许, 而执行非授权的数据库操作时将被拒绝。例如,允许用户xiaoqi 查询auth 库中 users表的数据记录, 但禁止查询其他库中的表的记录。

????????在企业服务器的应用中,数据库与网站服务器有时候是相互独立的。因此在MySQL服务器中. 应根据实际情况创建新的用户授权,允许授权用户从网站服务器访问数据库。通常的做法是,创建 一个或几个网站专用的库,并授予所有权限,限制访问的来源P地址。例如,执行以下操作可以新 建bdqn库,并授权从IP地址为192.168.4.19的主机连接,用户名为“dbuser”.密码为“pwd@123”. 允许在bdqn库中执行所有操作。

  • 查看权限?

SHOWGRANTS语句:专门用来查看数据库用户的授权信息,通过FOR子句可指定查看的用户对象(必须与授权时使用的对象名称一致)语句格式如下所示。

????????执行以下操作可以查看用户dbuser从主机192.168.4.19访问数据库时的授权信息。其中USAGE 权限对应的授权记录中包含了用户的连接密码字串。

  • 撤销权限

REVOKE语句:用于撤销指定用户的数据库权限,撤销权限后的用户仍然可以连接到MySOL服务 器,但将被禁止执行对应的数据库操作。语句格式如下所示。

执行以下操作可以撤销用户xiaoqi从本机访问数据库auth的所有权限。

实验案例:MySQL服务器的构建与维护

推荐步骤?

编译安装MySQL数据库系统。

启动mysqld 服务,为root 用户设置密码,删除空用户。 ?

创建bdon库,stuinfo表。

操作步骤

设置root用户密码为12357

mysql> update mysql.user set password=password('123457') where user='root';
Query OK, 4 rows affected (0.00 sec)
Rows matched: 4  Changed: 4  Warnings: 0

mysql> flush privileges;            //刷新用户授权信息
Query OK, 0 rows affected (0.00 sec)

删除密码为空的用户记录

mysql> delete from mysql.user where user='';
Query OK, 2 rows affected (0.00 sec)

新建bdqn库

mysql> create database bdqn;
Query OK, 1 row affected (0.01 sec)

添加一个名为'rundb'的数据用户,并允许其从本机访问,对bdqn库中的所有表具有所有权限,验证密码为'123456'。

mysql> grant all on bdqn.* to 'rundb'@'localhost' identified by '123456';
Query OK, 0 rows affected (0.00 sec)

查询‘rundb’用户在本机的权限,权限为所有all

mysql> show grants for 'rundb'@'localhost';
+--------------------------------------------------------------------------------------------------------------+
| Grants for rundb@localhost                                                                                   |
+--------------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'rundb'@'localhost' IDENTIFIED BY PASSWORD '*6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9' |
| GRANT ALL PRIVILEGES ON `bdqn`.* TO 'rundb'@'localhost'                                                      |
+--------------------------------------------------------------------------------------------------------------+
2 rows in set (0.00 sec)

?以rundb用户登录数据库

[root@lgcllc ~]# mysql -urundb -p123456
Warning: Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.6.36 Source distribution

Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> 

接着在bdqn库建立stuinfo表

mysql> use bdqn;
Database changed
mysql> create table stuinfo (姓名 char(16) not null, 性别 char(5) not null, 年龄 varchar(3) not null, 联系电话 varchar(11) not null,  邮箱地址 char(50) not null);
Query OK, 0 rows affected (0.01 sec)

填入数据

mysql> insert into stuinfo values('张无忌','男','19','17512345678','wuji.zhang@mingchao.org');
Query OK, 1 row affected (0.00 sec)

mysql> insert into stuinfo values('白居易','男','24','17587654321','juyi.bai@tangchao.org');
Query OK, 1 row affected (0.00 sec)

mysql> insert into stuinfo values('蓝采和','女','21','17255201314','caihe.lan@wudaisong.org');
Query OK, 1 row affected (0.00 sec)



mysql> insert into stuinfo values('','','','','');   //添加了一行为空的数据
Query OK, 1 row affected (0.00 sec)            

mysql> delete from stuinfo where 姓名='';          //删除为空的数据行
Query OK, 1 row affected (0.00 sec) 

实验结果

select * from bdqn.stuinfo;?语句查看创建的stuinfo表

文章来源:https://blog.csdn.net/m0_73258133/article/details/134974080
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。