当前位置: 首页 > 科技观察

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

时间:2023-03-17 15:24:29 科技观察

本教程介绍如何使用命令行创建和管理MySQL或MariaDB数据库和用户。MySQL是最流行的开源关系数据库管理系统。MySQL服务器允许我们创建大量的用户和数据库,并赋予相应的权限,使用户可以访问和管理数据库。开始之前在开始本教程之前,我们假设您已经在系统上安装了MySQL或MariaDB服务器。所有命令都将以root用户身份在MySQL提示符下执行。要打开MySQL提示符,请输入以下命令并在出现提示时输入MySQLroot用户密码:mysql-uroot-p创建新的MySQL数据库要创建新的MySQL或MariaDB数据库,请运行以下命令,只需将database_name替换为名称要创建的数据库的名称就足够了:CREATEDATABASEdatabase_name;输出:QueryOK,1rowaffected(0.00sec)如果您尝试创建一个已经存在的数据库,您将看到以下错误消息:ERROR1007(HY000):Can'tcreatedatabase'database_name';databaseexists为避免错误,如果存在您尝试创建的同名数据库,您可以使用以下命令:CREATEDATABASEIFNOTEXISTSdatabase_name;Output:QueryOK,1rowaffected,1warning(0.00sec)在上面的输出中,你可以看到queryok,这意味着查询成功,并且有1个警告告诉我们数据库已经存在并且没有创建新的。列出所有MySQL数据库我们可以使用以下命令列出MySQL或MariaDB服务器上存在的所有数据库:SHOWDATABASES;输出:+----------------+|数据库|+----------------+|information_schema||database_name||mysql||performance_schema||sys|+----------------------+5rowsinset(0.00sec)创建了information_schema、mysql、performance_schema和sys数据库在安装时,它们存储有关所有其他数据库、系统配置、用户、权限和其他重要数据的信息。这些数据库对于MySQL安装的正确功能是必需的。删除MySQL数据库要删除MySQL或MariaDB,请运行以下命令:DROPDATABASEdatabase_name;输出:QueryOK,0行受影响(0.00秒)如果您尝试删除一个不存在的数据库,您将看到以下错误消息:ERROR1008(HY000):Can'tdropdatabase'database_name';databasedoesn'texist为了避免这种情况报错,可以使用如下命令:DROPDATABASEIFEXISTSdatabase_name;Output:QueryOK,0rowsaffected,1warning(0.00sec)在上面的输出中,可以看到QueryOK,表示查询成功,还有1条warning告诉我们数据库不存在。创建一个新的MySQL用户帐户MySQL中的用户帐户由用户名和主机名部分组成。要创建新的MySQL或MariaDB用户帐户,请运行以下命令,只需将'database_user'替换为您要创建的用户名:CREATEUSER'database_user'@'localhost'IDENTIFIEDBY'user_password';在上面的命令中,我们将主机名部分设置为localhost,这意味着该用户将只能从本地主机(即从运行MySQL服务器的系统)连接到MySQL服务器。如果你想授予来自其他主机的访问权限,只需将本地主机更改为远程机器IP,或者对主机部分使用“%”通配符,这意味着用户帐户将能够从任何主机连接。与数据库一样,为避免在尝试创建已存在的用户帐户时出错,您可以使用:CREATEUSERIFNOTEXISTS'database_user'@'localhost'IDENTIFIEDBY'user_password';输出:QueryOK,0rowsaffected,1warning(0.00sec)更改MySQL用户帐户密码更改MySQL或MariaDB用户帐户密码的语法取决于您在系统上运行的服务器版本。您可以通过发出以下命令找到您的服务器版本:mysql--version如果您有MySQL5.7.6或更高版本或MariaDB10.1.20和更新版本,要更改密码,请使用以下命令:ALTERUSER'database_user'@'localhost'IDENTIFIEDBY'new_password';如果您有MySQL5.7.5及更高版本或MariaDB10.1.20及更高版本,请使用:SETPASSWORDFOR'database_user'@'localhost'=PASSWORD('new_password');在这两种情况下,输出应如下所示:QueryOK,0rowsaffected(0.00sec)列出所有MySQL用户帐户我们可以通过查询mysql.users表来列出所有MySQL或MariaDB用户帐户:SELECTuser,hostFROMmysql.user;输出应如下所示。此输出列出了在Ubuntu机器上运行的MySQL5.7服务器的默认用户以及我们之前添加的两个额外的用户帐户'database_user'@'%'和'database_user'@'localhost'。输出:+----------------+------------+|用户|主机|+----------------+--------+|database_user|%||database_user|localhost||debian-sys-maint|localhost||mysql.session|localhost||mysql。sys|localhost||root|localhost|+----------------+------------+6rowsinset(0.00sec)删除MySQL用户账号要删除用户帐户,请使用以下命令:DROPUSER'database_user@'localhost';输出:DROPUSER'database_user@'localhost';如果您尝试删除不存在的用户帐户,将会发生错误。ERROR1396(HY000):OperationDROPUSERfailedfor'database_user'@'localhost'与处理数据库时相同,为避免错误,您可以使用:DROPUSERIFEXISTS'database_user'@'localhost';输出:QueryOK,0rowsaffected,1warning(0.00sec)grantedtoMySQLuseraccountPermissions有多种类型的权限可以授予用户帐户。您可以在此处找到MySQL支持的完整权限列表。在本指南中,我们将通过几个示例:要通过特定数据库扩展用户帐户的所有权限,请使用以下命令:GRANTALLPRIVILEGESONdatabase_name.*TO'database_user'@'localhost';要将所有权限扩展到所有数据库用户帐户,请使用以下命令:GRANTALLPRIVILEGESON*.*TO'database_user'@'localhost';要通过数据库中的特定表将所有权限授予用户帐户,请使用以下命令:GRANTALLPRIVILEGESONdatabase_name.table_nameTO'database_user'@'localhost';如果只想将特定权限授予特定数据库类型的用户帐户:GRANTSELECT,INSERT,DELETEONdatabase_name.*TOdatabase_user@'localhost';撤销一个MySQL用户账户的权限如果你需要撤销一个用户账户的一个或多个权限或者所有权限,语法几乎和授予一样。例如,如果要通过特定数据库撤销用户帐户的所有权限,请使用以下命令:REVOKEALLPRIVILEGESONdatabase_name.*TO'database_user'@'localhost';要查找授予特定MySQL用户帐户类型的权限:SHOWGRANTSFOR'database_user''@'localhost';显示:+-----------------------------------------------------------------------+|Grantsfordatabase_user@localhost|+--------------------------------------------------------------------------+|GRANTUSAGEON*.*TO'database_user'@'localhost'||GRANTALLPRIVILEGESON`database_name`.*TO'database_user'@'localhost'|+-----------------------------------------------------------------------+2rowsinset(0.00sec)结论本教程仅涵盖基础知识,但对于任何想学习如何从命令行管理MySQL数据库的人都非常有用对于人和用户来说,这应该是一个好的开始。好的,就是这样!如果您有任何问题或反馈,请随时发表评论。在Ubuntu16.04上安装MySQL5.7教程https://www.linuxidc.com/Linux/2017-05/143864.htm