如何从命令行管理MySQL数据库和用户

发表于:2018-5-25 09:21

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:醉落红尘    来源:Linux公社

  本教程介绍了如何使用命令行来创建和管理MySQL或MariaDB数据库和用户。 MySQL是最受欢迎的开源关系数据库管理系统。 MySQL服务器允许我们创建大量用户和数据库并授予适当的权限,以便用户可以访问和管理数据库。
  在你开始之前
  在开始本教程之前,我们假设您已经在系统上安装了MySQL或MariaDB服务器。 所有命令将作为root用户在MySQL提示符内执行。
  要打开MySQL提示符,输入以下命令并在提示时输入MySQL root用户密码:
 mysql -u root -p 
  创建一个新的MySQL数据库
  要创建新的MySQL或MariaDB数据库,请运行以下命令,只需将database_name替换为要创建的数据库的名称即可:
  CREATE DATABASE database_name; 
  输出:
  Query OK, 1 row affected (0.00 sec) 
  如果您尝试创建一个已经存在的数据库,您将看到以下错误消息:
  ERROR 1007 (HY000): Can't create database 'database_name'; database exists 
  为避免出现错误,如果您尝试创建的名称相同的数据库存在,则可以使用以下命令:
  CREATE DATABASE IF NOT EXISTS database_name; 
  输出:
  Query OK, 1 row affected, 1 warning (0.00 sec) 
  在上面的输出中,您可以看到查询OK,这意味着查询成功,并且有1个警告告诉我们数据库已经存在,并且没有创建新的数据库。
  列出所有MySQL数据库
  我们可以使用以下命令列出MySQL或MariaDB服务器上存在的所有数据库:
  SHOW DATABASES; 
  输出:
  +--------------------+  
  | Database          |  
  +--------------------+  
  | information_schema |  
  | database_name      |  
  | mysql              |  
  | performance_schema |  
  | sys                |  
  +--------------------+  
  5 rows in set (0.00 sec) 
  information_schema,mysql,performance_schema和sys数据库是在安装时创建的,它们存储有关所有其他数据库,系统配置,用户,权限和其他重要数据的信息。 这些数据库对于MySQL安装的正确功能是必需的。
  删除一个MySQL数据库
  要删除MySQL或MariaDB,请运行以下命令:
  DROP DATABASE database_name; 
  输出:
  Query OK, 0 rows affected (0.00 sec) 
  如果您尝试删除不存在的数据库,您将看到以下错误消息:
  ERROR 1008 (HY000): Can't drop database 'database_name'; database doesn't exist 
  为了避免这个错误,你可以使用下面的命令:
  DROP DATABASE IF EXISTS database_name; 
  输出:
  Query OK, 0 rows affected, 1 warning (0.00 sec) 
  在上面的输出中,您可以看到Query OK,这意味着查询成功,并且有1个警告告诉我们数据库不存在。
  创建一个新的MySQL用户帐户
  MySQL中的用户帐户由用户名和主机名部分组成。
  要创建一个新的MySQL或MariaDB用户帐户,请运行以下命令,只需将'database_user'替换为您要创建的用户的名称即可:
  CREATE USER 'database_user'@'localhost' IDENTIFIED BY 'user_password'; 
  在上面的命令中,我们将主机名部分设置为localhost,这意味着该用户将只能从本地主机(即从运行MySQL服务器的系统)连接到MySQL服务器。 如果您想授予来自其他主机的访问权限,只需使用远程计算机IP更改本地主机,或者为主机部分使用'%'通配符,这意味着用户帐户将能够从任何主机连接。
  与使用数据库时一样,在尝试创建已存在的用户帐户时可避免出现错误,您可以使用:
  CREATE USER IF NOT EXISTS 'database_user'@'localhost' IDENTIFIED BY 'user_password'; 
  输出:
  Query OK, 0 rows affected, 1 warning (0.00 sec) 
  更改MySQL用户帐户密码
  更改MySQL或MariaDB用户帐户密码的语法取决于您在系统上运行的服务器版本。
  您可以通过发出以下命令找到您的服务器版本:
  mysql --version 
  如果你有MySQL 5.7.6或更高版本或MariaDB 10.1.20及更新版本,要更改密码,请使用以下命令:
  ALTER USER 'database_user'@'localhost' IDENTIFIED BY 'new_password'; 
  如果您有MySQL 5.7.5及更高版本或MariaDB 10.1.20及更高版本,请使用:
  SET PASSWORD FOR 'database_user'@'localhost' = PASSWORD('new_password');
  在这两种情况下,输出应如下所示:
  Query OK, 0 rows affected (0.00 sec) 
  列出所有MySQL用户帐户
  我们可以通过查询mysql.users表来列出所有MySQL或MariaDB用户帐户:
  SELECT user, host FROM mysql.user; 
  输出应该如下所示。 此输出列出了在Ubuntu机器上运行的MySQL 5.7服务器的默认用户以及我们之前添加的两个额外用户帐户'database_user'@'%'和'database_user'@'localhost'。
  输出:
  +------------------+-----------+  
  | user            | host      |  
  +------------------+-----------+  
  | database_user    | %        |  
  | database_user    | localhost |  
  | debian-sys-maint | localhost |  
  | mysql.session    | localhost |  
  | mysql.sys        | localhost |  
  | root            | localhost |  
  +------------------+-----------+  
  6 rows in set (0.00 sec) 
  删除MySQL用户帐户
  要删除用户帐户,请使用以下命令:
  DROP USER 'database_user@'localhost'; 
  输出:
  DROP USER 'database_user@'localhost'; 
  如果您尝试删除不存在的用户帐户,则会发生错误。
  ERROR 1396 (HY000): Operation DROP USER failed for 'database_user'@'localhost' 
  与处理数据库时一样,以避免错误可以使用:
  DROP USER IF EXISTS 'database_user'@'localhost'; 
  输出:
  Query OK, 0 rows affected, 1 warning (0.00 sec) 
  授予MySQL用户帐户的权限
  有多种类型的权限可以授予用户帐户。 您可以在这里找到MySQL支持的完整权限列表。 在本指南中,我们将通过几个例子:
  要通过特定数据库将用户帐户的所有权限扩大,请使用以下命令:
  GRANT ALL PRIVILEGES ON database_name.* TO 'database_user'@'localhost'; 
  要将所有权限扩展到所有数据库上的用户帐户,请使用以下命令:
  GRANT ALL PRIVILEGES ON *.* TO 'database_user'@'localhost'; 
  要通过数据库中特定的表格将所有权限提供给用户帐户,请使用以下命令:
  GRANT ALL PRIVILEGES ON database_name.table_name TO 'database_user'@'localhost'; 
  如果您只想授予特定数据库类型的用户帐户的特定权限,请执行以下操作:
  GRANT SELECT, INSERT, DELETE ON database_name.* TO database_user@'localhost'; 
  撤销MySQL用户帐户的权限
  如果您需要从用户帐户中撤销一个或多个权限或所有权限,则语法与授予它的几乎相同。 例如,如果要通过特定数据库撤消用户帐户的所有特权,请使用以下命令:
  REVOKE ALL PRIVILEGES ON database_name.* TO 'database_user'@'localhost'; 
  显示MySQL用户帐户权限
  要查找授予特定MySQL用户帐户类型的权限:
  SHOW GRANTS FOR 'database_user'@'localhost'; 
  显示:
  +---------------------------------------------------------------------------+  
  | Grants for database_user@localhost                                        |  
  +---------------------------------------------------------------------------+  
  | GRANT USAGE ON *.* TO 'database_user'@'localhost'                        |  
  | GRANT ALL PRIVILEGES ON `database_name`.* TO 'database_user'@'localhost' |  
  +---------------------------------------------------------------------------+  
  2 rows in set (0.00 sec) 
  结论
  本教程只介绍基础知识,但对于任何想要了解如何从命令行管理MySQL数据库和用户的人来说,这应该是一个很好的开始。
  OK,就这样! 如果您有任何问题或反馈,请随时发表评论。



上文内容不用于商业目的,如涉及知识产权问题,请权利人联系博为峰小编(021-64471599-8017),我们将立即处理。
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号