备忘单:提升你的 MariaDB 和 MySQL 数据库技能( 二 )


> SHOW COLUMNS IN USER;MariaDB [mysql]> SHOW COLUMNS IN USER;+-------------+---------------+------+-----+----------+| FIELD| TYPE| NULL | KEY | DEFAULT|+-------------+---------------+------+-----+----------+| Host| CHAR(60)| NO| PRI ||| USER| CHAR(80)| NO| PRI ||| Password| CHAR(41)| NO|||| Select_priv | enum('N','Y') | NO|| N|| Insert_priv | enum('N','Y') | NO|| N|| Update_priv | enum('N','Y') | NO|| N|| Delete_priv | enum('N','Y') | NO|| N|| Create_priv | enum('N','Y') | NO|| N|| Drop_priv| enum('N','Y') | NO|| N|[...]47 ROWS IN SET (0.001 sec)创建一个新的用户
不论你是否需要一个普通的账号来管理数据库或者为计算机配置数据库(例如安装 WordPress、Drupal 或 Joomla时) , 在 MariaDB 中多建一个用户账号是很普遍的 。 你可以通过向 mysql 数据库的 USER 表中添加一个用户或使用 SQL 关键字 CREATE 来提示 MariaDB 创建一个 MariaDB 用户 。 使用 CREATE 来创建新用户会默认执行一些有用的方法 , 因此你不需要手动生成所有的信息:
> CREATE USER 'tux'@'localhost' IDENTIFIED BY 'really_secure_password';查看表的字段
你可以使用 SELECT 关键字来查看数据库表的字段和值 。 这本例中 , 你创建了一个名为 tux 的用户 , 因此查询 USER 表中的列:
> SELECT USER,host FROM USER;+------+------------+| USER | host|+------+------------+| root | localhost|[...]| tux| localhost|+------+------------+7 ROWS IN SET (0.000 sec)为一个用户赋予权限
通过查看 USER 表列出的信息 , 你可以看到用户的状态 。 例如 , 新用户 tux 对这个数据库没有任何权限 。 使用 WHERE 语句你可以只查 tux 那一条记录 。
> SELECT USER,select_priv,insert_priv,update_priv FROM USER WHERE USER='tux';+------+-------------+-------------+-------------+| USER | select_priv | insert_priv | update_priv |+------+-------------+-------------+-------------+| tux| N| N| N|+------+-------------+-------------+-------------+使用 GRANT 命令修改用户的权限:
> GRANT SELECT ON *.* TO 'tux'@'localhost';> FLUSH PRIVILEGES;验证你的修改:
> SELECT USER,select_priv,insert_priv,update_priv FROM USER WHERE USER='tux';+------+-------------+-------------+-------------+| USER | select_priv | insert_priv | update_priv |+------+-------------+-------------+-------------+| tux| Y| N| N|+------+-------------+-------------+-------------+tux 用户现在有了从所有表中查询记录的权限 。
创建自定义的数据库到目前为止 , 你一直在与默认的数据库进行交互 。 除了用户管理 , 大部分人很少会与默认的数据库进行交互 。 通常 , 你会用自定义的数据来填充创建的数据库 。
创建一个 MariaDB 数据库
你可能已经可以自己在 MariaDB 中创建新数据库了 。 创建数据库跟新建用户差不多 。
> CREATE DATABASE example;Query OK, 1 ROW affected (0.000 sec)> SHOW DATABASES;+--------------------+| DATABASE|+--------------------+| example|[...]使用 use 命令来把这个新建的数据库作为当前使用的库:
> USE example;创建一个表
创建表比创建数据库要复杂 , 因为你必须定义列首 。 MariaDB 提供了很多方便的函数 , 可以用于创建列 , 引入数据类型定义 , 自增选项 , 对空值的约束 , 自动时间戳等等 。
下面是用来描述一系列用户的一个简单的表:
> CREATE TABLE IF NOT EXISTS member (-> id INT AUTO_INCREMENT PRIMARY KEY,-> name VARCHAR(128) NOT NULL,-> startdate TIMESTAMP DEFAULT CURRENT_TIMESTAMP);Query OK, 0 ROWS affected (0.030 sec)这个表通过使用一个自动递增的方法来唯一标识每一行 。 表示用户名字的字段不能为空(或 null) , 每一行被创建时会自动生成时间戳 。
使用 SQL 关键字 INSERT 向这个表填充一些示例数据:
> INSERT INTO member (name) VALUES ('Alice');Query OK, 1 ROW affected (0.011 sec)> INSERT INTO member (name) VALUES ('Bob');Query OK, 1 ROW affected (0.011 sec)> INSERT INTO member (name) VALUES ('Carol');Query OK, 1 ROW affected (0.011 sec)> INSERT INTO member (name) VALUES ('David');Query OK, 1 ROW affected (0.011 sec)验证一下表里的数据:
> SELECT * FROM member;+----+-------+---------------------+| id | name| startdate|+----+-------+---------------------+|1 | Alice | 2020-10-03 15:25:06 ||2 | Bob| 2020-10-03 15:26:43 ||3 | Carol | 2020-10-03 15:26:46 ||4 | David | 2020-10-03 15:26:51 |+----+-------+---------------------+4 ROWS IN SET (0.000 sec)同时增加多行数据
再创建一个表:
> CREATE TABLE IF NOT EXISTS linux (-> id INT AUTO_INCREMENT PRIMARY KEY,-> distro VARCHAR(128) NOT NULL);Query OK, 0 ROWS affected (0.030 sec)【备忘单:提升你的 MariaDB 和 MySQL 数据库技能】