这篇博客将介绍 MySQL 的安装,配置及其使用方法,另外,还会介绍如何使用 phpMyAdmin 这个工具来实现 MySQL 数据库的网页管理。
安装与配置 MySQL
Mac
Mac 下安装 MySQL 非常简单,首先下载 MySQL 的 dmg 安装包,然后双击安装软件。安装过程中,最新版本的 MySQL 会要求输入 root 用户的密码,并选择用户认证方式。这里认证方式建议选择第二项,如果选择第一项有可能与后面的讲到的 phpMyAdmin 不兼容,导致无法正常访问。不过选择了第一项也没关系,后面将会介绍兼容 phpMyAdmin 的方法。
安装完成后,把 MySQL 添加到环境变量中:
1 | vim ~/.bash_profile |
添加下列语句
1 | export PATH=$PATH:/usr/local/mysql/bin |
安装完成后,可以使用过下列命令访问 mysql:
1 | mysql -h host_name -u user_name -p |
回车后会要求输入密码,输入安装时设置的密码即可。其中 -h 参数指定 MySQL 所在服务器的地址,如果是 localhost,该参数可省略。-u 参数指定用户名,刚安装完只有 root 一个用户。如果登录成功,将会有 mysql 命令行提示,此时就可以通过 SQL 语句来操作数据库了。需要注意的是,此时只能本机访问 mysql,远程主机访问的设置后面将会讲到。
Linux
Linux 上的安装我只测试过[8]中介绍的 CentOS 安装,Ubuntu 没有亲自实验,有兴趣的可以参考 [3] 中介绍的方法。
1 | # 下载 mysql 的 repo 源 |
注意此时的 mysql 没有密码。如果登录时显示错误 ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock’,可以尝试执行以下命令:
1 | chown root /var/lib/mysql/ |
接下来重置 root 用户密码
1 | mysqladmin -u root password |
使用宝塔面板
宝塔面板[6]是一个可视化安装工具,可以通过浏览器一键安装 Apache 和 mysql 等常用网络工具。其安装也非常简单,执行以下两条命令:
1 | wget -O install.sh http://download.bt.cn/install/install_6.0.sh |
面板默认端口为8888,可以通过浏览器进行访问。需要注意的是,宝塔面板目前只支持 python 2,如果系统安装了 python 3 可能会安装失败。
MySQL 用户管理
创建用户
1 | CREATE USER 'username'@'host' IDENTIFIED BY 'password'; |
如果安装 MySQL 时认证方式选择的第二种,直接用第一个语句创建新用户就好了。如果安装 MySQL 时认证方式选择的第一种,然后又想用 phpMyAdmin 来管理 MySQL,就需要用第二个语句来创建新用户。其中 WITH 语句把新用户的认证方式设置成了 phpMyAdmin 能识别的 mysql_native_password,然后就可以用这个创建的新用户和密码来登录 phpMyAdmin 了。
授权
1 | GRANT privileges ON database_name.table_name TO 'user_name'@'host'; |
第一个语句指定了给 username 具体的操作权限,数据库,数据表格以及主机地址。第二个语句赋予 username 所有操作权限,所有数据表格,并允许其从任意其他主机登录。最后一个语句刷新操作权限。
利用 phpMyAdmin 来管理 MySQL
要管理 MySQL,用命令行非常麻烦,因此可以使用开源的 phpMyAdmin 通过网页进行管理。phpMyAdmin 的安装非常简单。
Mac
首先下载网页文件,并解压到 /Library/WebServer/Documents/ 目录下,完整的目录为:/Library/WebServer/Documents/phpmyadmin/。该目录为 Apache PHP 的文件目录,由于 Mac 中已经预装了 Apache 和 PHP,所以这里只需要把下载下来的文件放到 Apache 服务器文件目录就好了。
Linux
纯净的 Linux 系统一般没有预装 Apache 和 PHP,因此需要手动安装。
- 安装 Apache
正常可以使用以下命令安装[7]1
yum install -y httpd
如果上面命令出现 No package httpd available 问题,可以尝试使用以下命令
1 | yum --disableexcludes=all install -y httpd |
然后配置并启动 Apache 服务
1 | # 设置开机自动启动 |
此时在浏览器输入服务器 ip 地址就能打开 Apache 的引导页了。
安装 PHP
在 CentOS 上如果直接执行yum install php
可能安装的是 php5.4,而 phpmyadmin 至少需要 php5.5 以上的支持,所以这里我们介绍安装 php7 的安装方法[9]1
2
3
4
5
6# 获取 php7 源
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
# 安装 php7
yum install php70w
# 验证安装
php -v安装 phpmyadmin
phpmyadmin 的安装方式与 Mac 类似,可以使用 wget 下载源文件到 /var/www/html/ 目录[10]。1
2
3
4
5
6# 获取资源
wget https://files.phpmyadmin.net/phpMyAdmin/4.8.3/phpMyAdmin-4.8.3-all-languages.tar.gz
# 解压文件
tar -zxvf phpMyAdmin-4.8.3-all-languages.tar.gz
# 修改文件名
mv phpMyAdmin-4.8.3-all-languages phpmyadmin安装 php-mysqli
如果到此为止,登录 phpmyadmin 时可能提示缺少 php-mysqli,因此需要先安装一个 php-mysqli 包:1
yum install php-mysqli
配置
进入 phpamyadmin 目录,输入命令:
1 | cp config.sample.inc.php config.inc.php |
修改以下两项:
1 | $cfg['blowfish_secret'] = 'abcdefghigklmnopqrstuvwxyz123456789'; |
在浏览器中输入URL: http://localhost/phpmyadmin/便可以进入 phpmyadmin 登录界面。输入用户名 root 和之前设置的密码,就可以登录到 MySQL 的管理界面。
远程访问 MySQL
为了保护数据安全,默认情况下 MySQL 是不允许远程访问的。为了开启远程访问,需要修改 my.cnf 文件:
1 | sudo vim /etc/mysql/my.cnf |
修改下列三行:
1 | # skip-external-locking |
如果存在前面两条语句,直接注释掉,因为它们的作用是让 MySQL 不监听任何外部消息,而 bind-address 是指定可以访问 MySQL 的 IP 地址,0.0.0.0 表示允许所有外部 IP 访问。这个时候就可以在远程主机访问 MySQL 了:
1 | mysql -h host_name -u user_name -p |
这里的 host_name 是安装了 MySQL 的服务器地址,user_name 这个用户必须被赋予了足够的权限(参考用户管理部分)。
如果无法成功连接远程 mysql 服务器,检查一下远程服务器防火墙的 3306 端口是否开启,因为 MySQL 是通过这个端口来监听外部消息的。另外,如果服务器安装在内网,远程访问还有可能被路由器防火墙拦截,这个时候就只能联系公司或学校的网络管理人员,看能不能把这个端口打开了。如果经过以上配置还是无法远程连接,可以参考[11]中的方法进行排查。
Python 连接 MySQL
MySQLdb 是 Python 连接 MySQL 最流行的一个驱动,因为它是用 C 语言写成的,效率非常高。它的缺点是由于年久失修,只支持 Python2.x,对于使用 Python3.x 的同学可以用它的 Fork 版本 mysqlclient,它可以完全兼容 MySQLdb。在 MacOS 和 Linux 上,mysqlclient 的安装也非常简单,直接用 pip 或 conda 安装即可:
1 | pip install mysqlclient |
如果安装过程中报错,可能是缺少 python3-dev 和 libmysqlclient-dev 包,可以通过以下命令安装:
1 | sudo apt-get install python3-dev libmysqlclient-dev |
当然,Python 连接 MySQL 还有很多其他的驱动,感兴趣的同学可以参考 [4] 来了解它们的优缺点。
需要注意的是,即使安装了 mysqlclient,在写 python 代码的时候,也需要 import MySQLdb,而不是 import mysqlclient,否则会报错。
mysqlclient 是用原生 SQL 语言来实现数据库访问任务的,所以要求大家会使用 SQL 语言。下面用一个创建数据库的例子来展示 mysqlclient 的编程实现。
1 | import MySQLdb |
有用链接
[1] mac下配置php+mysql
[2] MySQL创建用户与授权方法
[3] Linux(Ubuntu)下MySQL的安装与配置
[4] 用 Python 连接 MySQL 的几种姿势
[5] Python 操作 MySQL 数据库
[6] 宝塔面板
[7] CentOS 7下Apache的安装
[8] CentOS7 64位安装mysql教程,亲测完美
[9] CentOs 7 安装PHP开发环境
[10] Centos 下 phpMyAdmin 安装
[11] MySQL本地可以连接,远程连接不上的问题