各大主流Linux平台MySQL部署指南
出于上手指南的基本定义,我们先假设各位读者对于Linux系统平台上的MySQL基本或者完全没有知识储备,然后把重点集中在如何对MySQL进行安装及配置,并进一步尝试将应用程序与数据库对接以保证其运行。像数据库编程及SQL语言等更深层次的MySQL话题则不在本文的讨论范围之内。
安装MySQL
首先,我们需要把MySQL安装到自己的系统当中。假设我们已经拥有一台仅安装了Ubuntu、Fedora或者CentOS的服务器,接下来要做的则是利用软件包安装工具来获取各种必要软件并加以安装。
请注意,除了MySQL主代码我们可能还需要一些额外的软件包,这样才能确保大家的应用程序正常运作。举例来说,如果大家希望让MySQL与一款基于PHP的应用程序协作,我们就需要安装PHP MySQL软件包以保证PHP能够与MySQL服务器顺利对话。
不过在开始之前,我们还需要检查操作系统在安装过程中是否已经同时完成了MySQL的安装工作。在Fedora与CentOS系统中我们需要以root身份运行下列命令:
# rpm -qa | grep mysql
在Ubuntu中我们则运行以下命令:
$ sudo dpkg -l | grep mysql
如果输出的结果中包含mysql-server软件包,则MySQL已经安装完成。大家还需要确认php-mysql等针对应用程序的MySQL扩展包也被正确安装到位。
如果我们没有在列出的结果中看到MySQL,那么在Fedora与CentOS中需要以root用户身份使用YUM命令:
# yum install mysql-server php-mysql
经过这一步,我们就完成了MySQL服务器、客户端、必要软件包与库以及PHP MySQL扩展等项目的安装工作。
在Ubuntu方面,我们需要运行以下命令:
$ sudo apt-get install mysql-server php5-mysql
经过这一步,我们就完成了MySQL服务器与PHP MySQL扩展包的安装工作。另外,安装程序会提示我们为MySQL root用户设定密码并在完成安装前启动服务器。
在CentOS与Fedora方面,我们需要额外启动服务器并设定MySQL root用户密码:
$ su - # service mysqld start # mysqladmin password <newpassword>
大家只要把以上范例中的<newpassword>部分替换为想要设定的密码即可。
现在,我们就可以开始创建MySQL的功能性服务器实例了。大家能够通过mysql客户端登入服务器以进行测试:
$ mysql -u root -p
现在系统会提示我们输入设定好的MySQL root用户密码,屏幕上显示的提示符为mysql>。这时我们开始着手登录到刚刚创建的实例中并准备对其进行配置。大家可以在mysql>提示符后输入quit命令登出MySQL服务器。
在进行下一步之前,我们需要保证MySQL正在对正确接口中的连接进行侦听。在默认情况下,Ubuntu会将MySQL设定为仅侦听本地主机地址。如果大家正在安装的应用程序与MySQL运行在同一台服务器上,这一设定倒不会引发什么问题,因为二者能够越过本地主机接口进行直接通信。然而一旦大家需要将这台MySQL服务器与其它服务器相连,我们就需要取消该限制。请注意,这个问题只发生在Ubuntu系统环境之下,Fedora与CentOS在安装过程中并不会限定本地主机地址。
为了实现Ubuntu系统环境下MySQL与其它系统的连通,我们需要对MySQL配置文件进行编辑。该文件位置为/etc/mysql/my.cnf。我们可以通过nano编辑器进行内容变更。
$ sudo nano /etc/mysql/my.cnf
文件被打开之后,大家向下滚动屏幕直到寻获bind-address内容,然后在命令行开头插入#注释符。这将会令MySQL在启动后忽略该配置行内容,进而允许服务器对来自所有IP地址及接口的连接进行侦听。反之对应,其它主机也会同时获得接入许可。
接Ctrl-O快捷键保存文件修改,再按Ctrl-X退出编辑器。现在我们需要重新启动MySQL服务器:
$ sudo service mysql restart
现在我们已经搞定一切准备工作,可以正式对MySQL服务器进行配置了。
MySQL基础配置
对于大多数应用程序而言,并不需要对MySQL的配置做出太多变更。我们可以根据需要对my.cnf文件中的参数进行调整,但具体调整方式取决于应用程序对于MySQL的实际要求。如果有必要做出变更,应用程序的安装手册中应该会列出详细条目。然而还有不少应用程序需要我们手动创建一套数据库,并为数据库手动分配用户名与密码,这样才能让应用顺利完成安装。在Ubuntu、Fedora或者CentOS系统中,我们都可以通过以下命令实现上述要求:
$ mysql -u root -p
接下来输入root密码并登录服务器实例。下面我们就开始创建数据库:
mysql> CREATE DATABASE 'mydatabase';
请注意,mydatabase前后使用的是重点符而非单引号。这条命令将创建一套名为MyDatabase的数据库。然后我们需要进行权限分配。我们可以为某一位用户分配受限权限,但大多数应用程序都要求拥有全部权限,因此我们可以再额外添加一个用户名并赋予其全部权限。
mysql> GRANT ALL PRIVILEGES on mydatabase.* TO myuser@localhost IDENTIFIED BY 'mypassword';
请注意,上述内容中的mypassword前后为单引号。
这将赋予名为myuser的用户全部权限,而密码则为mypassword。不过如果二者是在本地系统中生成的,那么数据库将只能识别由这套用户名及密码创建的连接。如果大家需要让另一台服务器与MySQL实例进行通信,我们还得额外指定IP地址或者主机名称。
mysql> GRANT ALL PRIVILEGES on mydatabase.* TO [email protected] IDENTIFIED BY 'mypassword';
经过这一步,我们的数据库将允许IP地址为192.168.100.5的系统进行接入,用户名为myuser、密码则为mypassword。
现在大家可以利用MySQL客户端尝试新用户能否正常接入。如果我们的测试在运行着MySQL的服务器上进行,那么需要输入以下命令:
$ mysql -u myuser -p
如果我们要在另一套系统中进行测试,则需要指定要连接的服务器对象:
$ mysql -u myuser -h <server IP address or name> -p
这里大家要在-h之后输入MySQL服务器的实际IP地址或主机名称。
如果一切顺利,那么我们应该能够正确登入实例,接下来要处理的就是应用程序的安装流程了。
大多数LAMP应用都具备指定的MySQL安装工具及引导说明。有些应用还拥有一款小型脚本,大家需要在命令行中加以运行来提前创建数据库架构以启动应用程序,不过也有一些采用基于Web的安装工具。我们需要认真阅读应用程序的安装说明,以确定需要对MySQL进行哪些预先设置以完成应用安装。
利用phpMyAdmin管理MySQL
完成应用程序的安装及测试工作之后,大家需要保留数据库上的标签,也可能打算对数据库进行高级管理。在大多数情况下,使用基于Web的工具能够简化数据库管理流程,帮助那些对于MySQL管理工作不太熟悉的用户顺利搞定一切。
phpMyAdmin就是其中之一,它是一款基于PHP的MySQL管理工具。phpMyAdmin提供了一套简单易用的Web GUI,能够执行几乎全部MySQL管理任务。在它的辅助下我们的生活将变得更加轻松愉快。
要在Fedora及CentOS上进行安装,我们需要以root身份运行以下命令:
# yum install phpmyadmin
而在Ubuntu方面,我们需要运行以下命令:
$ sudo apt-get install phpmyadmin
Ubuntu会提示处于使用状态下的Web服务器,这样它就可以自动对其进行配置。在大多数情况下,大家使用的都是Apache,所以除非各位确定自己要选择lighttpd或者其它Web服务器,否则都应按Apache进行设置。另外,Ubuntu还会提示我们为phpMyAdmin进行手动或者自动配置。除非大家习惯于进行手动配置,否则还是选择安全稳妥的自动配置比较保险——这一过程同样需要输入MySQL root密码。在此之后,Ubuntu将完成全部配置工作,并重新启动服务器。不过由于服务器的初始创建情况有所不同,有时候我们还需要安装Apache PHP模块,具体方式如下所示:
$ sudo apt-get install libapache2-mod-php5
在Fedora与CentOS系统平台上,我们需要做出一些细小改动以便在远程系统端访问phpMyAdmin。这里要再次使用nano对phpMyAdmin配置文件加以编辑:
# nano /etc/httpd/conf.d/phpmyadmin.conf
打开文件后,我们要在内容最末加入一行“Allow from 127.0.0.1”,然后输入允许访问的IP地址或范围。举例来说,如果我们输入“Allow from 192.168.1”,就意味着允许192.168.1.0到192.168.1.24的所有子风进行连接。大家可以多输入几行命令,将自己可能需要接入的IP地址或子网全部涵盖进来。
内容添加完成后,我们按下Ctrl-O保存文件并按下Ctrl-X退出编辑器。现在重新启动Apache:
# service httpd restart
在Fedora与CentOS系统平台上,我们还需要为phpMyAdmin配置添加Blowfish加密机制。这项工作也可以通过nano实现。
# nano /usr/share/phpMyAdmin/config.inc.php
(请注意:大家可以在phpMyAdmin目录下只能找到一个名为config.sample.inc.php的文件,如果是这样,请将其复制并保存为config.inc.php。)
找到如下内容:
$cfg['blowfish_secret'] = ''; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */
在两个引号之间输入加密内容,如下所示:
$cfg['blowfish_secret'] = 'SDJkjshdkfjhsdf9**&^%^&%'; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */
这段加密内容可以是任何字符,随意性最好大一些。大家不再需要在其它任何地方重新输入这段加密内容,这仅仅属于内部需要。还是老办法,Ctrl-O保存文件、Ctrl-X退出编辑器。
现在我们可以在服务器的Web浏览器上通过以下URL输入phpMyAdmin了。
http://<server IP address>/phpmyadmin
接入phpMyAdmin
在接入phpMyAdmin之后,大家首先面对的是一个登录对话框。在默认情况下,phpMyAdmin会优先与本地主机MySQL实例相连(而非远程实例),因此我们需要输入的用户名与密码需要同root用户或者拥有足够权限的其它用户设定相吻合。
登录成功后,大家应该会在屏幕左侧看到数据库列表,并在右侧看到配置及管理选项。点击左侧的数据库名称可以浏览数据库内容、添加或删除表及数据、导入及输出数据及数据库架构,或者执行其它各类管理任务。请大家千万不要进行任何自己不熟悉的操作,例如弃用(也就是删除)数据库等。
在上手phpMyAdmin之前,还有几项提示值得大家关注。首先要说的是如何对数据库进行备份,或者将其导出为本地系统中的文件。要实现这一目的,我们需要单击屏幕左侧的数据库名称、单击上方的“导出(Export)”选项。大多数情况下我们不需要对选项进行任何变更,只消点击文件选项底部紧挨着“另存为(Save as)”的按钮、在必要时选择压缩格式,然后点击“开始(Go)”即可。这时整个数据库都将被导出,并依选项进行压缩,最终通过浏览器下载到我们的计算机当中。
另一项实用技巧则正好与导出相反,也就是将数据从备份文件导入到新数据库中。首先,单击左上角的Home图标创建新数据库,然后点击“数据库(Database)”选项。在接下来的文本框中输入新数据库的名称,如果了解排序规则就按理解进行选择,然后点击“创建(Create)”。简简单单,屏幕左侧的列表中就多出一套新数据库来。
现在点击新数据库名称,点击屏幕上方的“导入(Import)”按钮。在弹出的浏览器窗口中选择备份文件然后点击Go。经过此番操作,数据库备份将被自动导入新数据库当中。
大家还可以利用phpMyAdmin创建并管理数据库用户。点击屏幕左上方的Home图标并选择“权限(Privileges)”。在这里我们可以通过填写资料表添加新用户,并为其指定用户名与密码。当然,这里创建出的用户拥有全局权限;如果大家只想为某个特定数据库设定用户,则取消所有复选框选项。用户创建好之后,再次单击权限选项,然后点击用户名右侧的“编辑(Edit)”图标。接下来在数据库特定权限中选择对应数据库,并根据需要为用户分配权限。大家可以通过“全选(Check All)”项目快速为用户赋予全部权限,也可以在必要时进行细节调整。
此外,phpMyAdmin也允许我们查看服务器运行状态。点击屏幕左上方的Home图标、点击“进程(Processes)”来查看活动MySQL连接与进程,然后点击“状态(Status)”来进一步掌握服务器流量、查询及变量统计等信息列表。如果某些项目存在潜在问题,phpMyAdmin会以红色标记出对应的统计数据——例如打开的表数量过大等。每个变量旁边都配有该变更的简短描述,有时候还会对可能出现问题的情况给出提示信息——例如表缓存值可能过小等。对于新人而言,这是一种了解MySQL服务器设置及其意义的绝佳方式。所有这些变量都可以在my.cnf文件中进行调整,不过其中有些变量也可以在服务器运行状态下直接加以修改。