设置MySQL数据库

本文介绍如何在CentOS上执行流行的MySQL数据库服务器的基本安装。 MySQL是当今使用最广泛的数据库系统,它可以在许多不同的行业中找到,为动态网站和大型数据仓库等各种产品提供数据存储。

准备

此配方要求CentOS系统具有有效的网络连接和管理权限,使用root帐户或sudo。

怎么做

请按照以下步骤安装MySQL并创建新数据库:

  • 下载Oracle维护的MySQL存储库的存储库配置包:
curl -LO dev.mysql.com/get/mysql57-community-release-el7- 7.noarch.rpm
  • 安装下载的包:
yum install mysql57-community-release-el7-7.noarch.rpm
  • 现在已经注册了MySQL存储库,安装mysql-community-serverpackage:
yum install mysql-community-server
  • 启动MySQL服务器并使其在系统重新启动时自动启动:
systemctl start mysqld.servicesystemctl enable mysqld.service
  • 在系统的防火墙中打开端口3306以允许外部连接到MySQL:
firewall-cmd --zone=public --permanent --add-service=mysqlfirewall-cmd --reload
  • 从服务器的日志文件中检索MySQL的root用户的临时密码:
grep "temporary password" /var/log/mysqld.log
  • 使用mysqladmin为root设置新密码。 当程序提示输入当前密码时,请输入日志中的临时密码:
mysqladmin -u root -p password
  • 使用mysql使用root帐户连接到MySQL服务器:
mysql -u root -p
  • 要创建新数据库,请执行CREATE DATABASE语句:
CREATE DATABASE packt;
  1. 执行CREATE USER语句以创建用于处理数据库的MySQL用户帐户:
CREATE USER "tboronczyk"@"localhost" IDENTIFIED BY "P@$$W0rd";
  1. 执行GRANT语句以为新数据库的帐户分配适当的权限:
GRANT CREATE, DROP, ALTER, LOCK TABLES, INDEX, INSERT, UPDATE,  SELECT, DELETE ON packt.* TO "tboronczyk"@"localhost";
  • 执行FLUSH PRIVILEGES以指示MySQL重建其权限缓存:
FLUSH PRIVILEGES;
  • 退出MySQL客户端并返回终端:
exit

工作原理

我们首先下载了在我们的系统上注册Oracle维护的MySQL存储库的软件包。 MySQL是从Oracle存储库安装的,因为CentOS存储库安装了MariaDB。 经过2008年至2010年的一系列收购,MySQL代码库和商标成为Oracle的财产。 对Oracle的管理和MySQL的未来的广泛关注促使MySQL的一个原始开发人员分叉项目并启动MariaDB。 2014年,Red Hat和CentOS存储库将MySQL替换为MariaDB的默认数据库(欢迎来到开源政治领域)。

注意

MariaDB的目标是在GNU GPL许可下保持一个免费的开源项目,并成为MySQL的“增强型,替代品”。目前,两者之间的差异对于临时用户来说可以忽略不计。但在分叉替换的世界中,主要是编程接口和通信协议保持兼容。核心功能最初可能保持不变,但随着时间的推移,新功能会独立添加,并且产品的功能集开始出现分歧。 MariaDB通过版本号的跳跃来承认这一点。 MariaDB 5.1提供与MySQL 5.1相同的功能,MariaDB 5.5 for MySQL 5.5也是如此。但是,MariaDB不打算实现MySQL 5.6的所有功能,并将其版本号更改为10.0。对于那些在家中保持分数的人来说,Oracle编写的存储库在撰写本文时主持了MySQL 5.7。 CentOS存储库目前提供MariaDB 5.5。

托管软件包的服务器假定人们使用Web浏览器下载文件并发出重定向以开始下载。由于我们使用curl,因此我们提供了-L参数来跟踪重定向以到达实际的包:

curl -LO dev.mysql.com/get/mysql57-community-release-el7-7.noarch.rpm

接下来,我们安装了下载的包。 一旦注册了存储库,我们就可以使用mysql-community-server软件包安装MySQL。 该软件包安装服务器二进制文件,与MySQL一起使用的客户端实用程序作为依赖项安装:

yum install mysql57-community-release-el7-7.noarch.rpmyum install mysql-community-server

MySQL维护自己的用户帐户,其管理用户名为root。 就像CentOS的root用户一样,您不应该将该帐户用于常规活动; 它应该保留用于管理任务,例如创建新用户,授予权限和刷新服务器的缓存。 其他权限较低的帐户应该用于日常活动。 为了保护root帐户,我们在第一次启动MySQL服务器时随机生成密码。 我们需要搜索MySQL记录密码的日志文件,以便我们可以设置我们自己选择的新密码:

grep "temporary password" /var/log/mysqld.log

知道了临时密码,我们用mysqladmin来改变它。 -u选项提供MySQL帐户的用户名,-p提示我们输入帐户的密码,password是实用程序用于更改密码的子命令。 我们在提示输入原始密码时输入了临时密码,然后我们被要求输入并确认新密码:

mysqladmin -u root -p password

注意

root的随机默认密码是从MySQL 5.6开始的新行为,它将密码写入/root/.mysql_secret,而5.7将其写入日志文件。 在旧版本中,因此由CentOS存储库安装的MariaDB自5.5以来,密码为空。 validate_password插件也在MySQL 5.7中激活。 它要求密码为八个字符或更多,至少有一个数字,一个大写和一个小写字符,以及一个特殊字符(即标点符号)。 选择root的新密码时请考虑这些要求。

设置root的永久密码需要临时密码

我们可以使用几个客户端连接到MySQL并与我们的数据库进行交互。 这个配方使用了mysql,因为它默认安装为依赖项。 同样,-u标识帐户的用户名,-p提示我们输入密码:

mysql -u root -p

在交互模式下运行时,客户端显示我们提交SQL语句的提示mysql>。 在每次查询之后,客户端显示服务器的响应,语句执行的时间以及服务器是否报告任何错误或警告。

我们在提示符处发出了CREATE DATABASE语句,以创建名为packt的新数据库:

CREATE DATABASE packt;

然后我们使用CREATE USER创建了一个新的用户帐户,以避免在我们的日常工作中使用root。 该帐户名为tboronczyk,允许从localhost进行身份验证:

CREATE USER "tboronczyk"@"localhost" IDENTIFIED BY "P@$$w0rd";

如果帐户将从其他系统连接到服务器,则系统的主机名或IP地址可以替换localhost。 MySQL将每个用户名和主机名对视为单独的帐户,例如tboronczyk @ localhost和tboronczyk @ 192.168.56.100是不同的帐户,可以分配不同的权限。

注意

您可以在主机名中使用通配符来创建可以从多个系统连接的帐户。 %通配符匹配零个或多个字符,因此可用于表示任何系统:

CREATE USER "tboronczyk"@"%" IDENTIFIED BY "P@$$w0rd";

创建新帐户时没有任何权限,因此我们必须通过执行GRANT语句来分配它们:

GRANT CREATE, DROP, ALTER, LOCK TABLES, INSERT, UPDATE, SELECT, DELETE ON packt.* TO "tboronczyk"@"localhost";

该语句为packt数据库中的所有表(用*表示)分配以下权限:

  • CREATE: 这允许用户创建数据库和表
  • DROP: 这允许用户删除整个表和数据库
  • ALTER: 这允许用户更改现有表的定义
  • LOCK TABLES: 这允许用户锁定表以进行独占读或写访问INDEX: This allows the user to create table indexes
  • INSERT: 这允许用户将记录添加到表中
  • UPDATE: 这允许用户更新表中的记录
  • SELECT: 这允许用户从表中检索记录
  • DELETE: 这允许用户从表中删除记录

完整的权限列表以及允许用户执行的操作可以在http://dev.mysql.com/doc/refman/5.7/en/grant.html上的官方MySQL文档中找到。

接下来,我们指示MySQL使用FLUSH PRIVILEGES重建其权限缓存:

 FLUSH PRIVILEGES; 

当MySQL启动时,它会将用户和权限信息缓存在内存中(您将从第5章“管理文件系统和存储”中回忆起,从内存读取比从磁盘读取要快得多),然后每次用户执行时检查缓存验证他们是否具有足够权限的操作。每当我们创建或删除用户帐户或授予或撤销帐户的权限时,我们都需要告诉MySQL更新其缓存,否则我们的更改将在MySQL下次启动时被忽视。

当使用mysql连接到MySQL时,您可能经常使用其他选项调用它。常见选项是-h,如果MySQL在不同的系统上运行,它将标识远程服务器的主机名或IP地址。 -e直接执行语句,而不是以交互方式启动mysql。此外,要使用特定数据库,可以在命令的其余部分之后给出名称,也可以使用-D来指定它。以下示例通过连接到192.168.56.100上的MySQL服务器并对其sakila数据库执行SELECT语句来演示所有这些:

mysql -u tboronczyk -p -h 192.168.56.100 -D sakila -e "SELECT last_name, first_name FROM actor"

See also

Refer to the following resources for more information on working with MySQL:

  • The mysql manual page (man 1 mysql)
  • MySQL 5.7 reference manual (http://dev.mysql.com/doc/refman/5.7/en)
  • Jump Start MySQL (http://www.amazon.com/Jump-Start-MySQL-Timothy-Boronczyk/dp/0992461286)
  • MySQL Tutorial (http://www.mysqltutorial.org/)

数据库设置_CentOS7 - 设置MySQL数据库相关推荐

  1. mysql执行代码段_mysql的event schedule 可以让你设置你的mysql数据库再某段时间执行你想要的动作...

    mysql的event schedule 可以让你设置你的mysql数据库再某段时间执行你想要的动作 这与视图是不相同的. create event test1 on schedule every 1 ...

  2. mysql基本命令大全_Django 学习笔记之 如何设置和操作 mysql 数据库

    我们之前学习了 在 django项目如何设置和操作sqlite 数据库. 在这一节中,我们会借由旧有思路来设置和操作 mysql 数据库.同时,我们会学习基本的mysql的SQL 命令,方便我们进行 ...

  3. 从mysql数据库中读取二进制文件_数据库技术之在MYSQL数据库中如何存取二进制文件...

    [数据库技术之在MYSQL数据库中如何存取二进制文件]在MySQL数据库中,不可以存放文字信息,还可以存放图片.声音.文件等二进制信息.那么在MYSQL数据库中中如何存取二进制文件?下面,武汉宏鹏鲁广 ...

  4. Mysql数据库(三)——mysql数据库高级操作

    Mysql数据库(三)--mysql数据库高级操作 一.指定主键的另一种方式 二.克隆/复制一个表 1.方法一 2.方法二 三.清空表,删除表内数据 1.方法一 2.方法二 3.方法三 4.三个删除方 ...

  5. Mysql数据库(一)——mysql数据库初体验

    Mysql数据库(一)--mysql数据库初体验 一.数据库的概念 1.数据库的组成 ①.表 ②.数据库 2.数据库类型 ①.关系型数据库 ②.非关系型数据库(NoSQL (Not Only SQL) ...

  6. java如何实现e的次方_Java开发如何更改MySQL数据库datadir目录之MySQL数据库索引实现...

    引言 MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品.MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 ...

  7. php mysql数据库同步_实现MySQL数据库同步实例演示_MySQL

    本次实验的主要目的是剖析配置MySQL(和PHP搭配之最佳组合) 数据库的主辅MySQL数据库同步的实际操作步骤,我前两天在相关网站看见的资料,觉得挺好,就拿出来供大家分享,开始具体的配置. 本次试验 ...

  8. MariaDB数据库——一款比Mysql数据库更优秀的数据库

    MariaDB数据库简介 MariaDB数据库是Mysql数据库的姊妹,它的使用方式与Mysql完全相同,而且MariaDB数据库的性能比Mysql更加优秀.MariaDB数据库与Mysql数据库的拥 ...

  9. 如何修改mysql数据库服务器时间,修改mysql数据库服务器时间格式

    修改mysql数据库服务器时间格式 内容精选 换一换 本章节为您介绍使用Maxwell同步工具将线下基于binlog的数据迁移到MRS Kafka集群中的指导.Maxwell是一个开源程序(https ...

  10. asp.net mysql 创建变_[ASP.net教程]EF Core使用CodeFirst在MySql中创建新数据库以及已有的Mysql数据库如何使用DB First生成域模型...

    [ASP.net教程]EF Core使用CodeFirst在MySql中创建新数据库以及已有的Mysql数据库如何使用DB First生成域模型 0 2018-06-30 07:00:08 官方教程: ...

最新文章

  1. tomcat9配置https-pfx
  2. SAP MM 采购订单含税价实现方式
  3. Win32API 窗口程序的创建7大步骤
  4. 相移波束形成算法的MATLAB仿真
  5. Java 7之集合类型 - 二叉排序树、平衡树、红黑树---转
  6. WebApplicationContext初始化
  7. map原理 java_RxJava的基本原理以及Map,flatMap的原理
  8. NSUserDefaults
  9. Python 字符串操作(string替换、删除、截取、复制、连接、比较、查找、包含、大小写转换、分割等)
  10. 函数声明是形参类型省略
  11. 详解S60 WebKit 21772编译教程
  12. 画面风格写实的5z20
  13. jQuery系列之目录汇总
  14. java的 交换排序 快速排序算法_数据结构之排序算法Java实现(4)—— 交换类排序之快速排序算法...
  15. 联想拯救者Legion Y7000P 2020款(10代INTEL+GTX1650)安装ubuntu16.04(双系统)
  16. SOME/IP报文格式-Payload
  17. 基于微博评论的情感分析研究(小记)
  18. 蓝桥杯python小学组_蓝桥杯python组如何准备
  19. b站的服务器在哪个文件夹,b站缓存的视频在哪个文件 具体操作步骤
  20. android手机查看root,怎么看安卓手机是否Root 一键检测手机root方法

热门文章

  1. for循环中let,var 的经典面试题:for循环中 console.log(i)详解
  2. regedit或child_process添加注册表
  3. Java中的序列化与反序列化机制
  4. mybatis plus实现多表分页条件查询
  5. linux 编辑器_Linux的vi编辑器详细总结
  6. python中int input_python中的input是什么
  7. mysql数据库连接不稳定_连接 MySQL 数据库失败频繁的原因探秘
  8. qt中继承pushbutton自定义控件设置按钮样式
  9. C/C++ ltoa函数 - C语言零基础入门教程
  10. 服务器修改用户组权限设置,如何:修改用户的权限