MySQL+phpMyAdmin 安装与使用方法

这篇博客将介绍 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 语言来操作数据库了。

Linux

Linux 上的安装笔者没有亲自实验,大家可以参考 [3] 中讲到的方法。

MySQL 用户管理

创建用户

1
2
CREATE USER 'username'@'host' IDENTIFIED BY 'password';
CREATE USER 'username'@'host' IDENTIFIED WITH mysql_native_password BY 'password';

如果安装 MySQL 时认证方式选择的第二种,直接用第一个语句创建新用户就好了。如果安装 MySQL 时认证方式选择的第一种,然后又想用 phpMyAdmin 来管理 MySQL,就需要用第二个语句来创建新用户。其中 WITH 语句把新用户的认证方式设置成了 phpMyAdmin 能识别的 mysql_native_password,然后就可以用这个创建的新用户和密码来登录 phpMyAdmin 了。

授权

1
2
3
GRANT privileges ON database_name.table_name TO 'user_name'@'host';
GRANT ALL ON *.* TO 'user_name'@'%';
FLUSH PRIVILEGES

第一个语句指定了给 username 具体的操作权限,数据库,数据表格以及主机地址。第二个语句赋予 username 所有操作权限,所有数据表格,并允许其从任意其他主机登录。最后一个语句刷新操作权限。

利用 phpMyAdmin 来管理 MySQL

要管理 MySQL,如果用命令行比较麻烦,开源的 phpMyAdmin 采用C/S的模式,方便管理。接着我们就装一个 phpMyAdmin。它是由 php 开发的,首先下载文件,将下载下来的文件解压放在 /Library/WebServer/Documents/ 目录下,完整的目录为:/Library/WebServer/Documents/phpmyadmin/。该目录为 Apache PHP 的文件目录,由于 Mac 中已经预装了 Apache 和 PHP,所以这里只需要把下载下来的文件放到 Apache 服务器文件目录就好了。

进入这个目录,输入命令:

1
2
cp config.sample.inc.php config.inc.php
vim config.inc.php

按照下面进行修改:

1
2
$cfg['blowfish_secret'] = '';
$cfg['Servers'][$i]['host'] = '127.0.0.1';

现在可以在浏览器中输入URL: http://localhost/phpmyadmin/,用户名为 root,密码为安装时设置的密码,就可以 login 到 MySQL 的管理界面。

远程访问 MySQL

为了保护数据安全,默认情况下 MySQL 是不允许远程访问的。为了开启远程访问,需要修改 my.cnf 文件:

1
sudo vim /etc/mysql/my.cnf

修改下列三行:

1
2
3
# skip-external-locking
# skip-networking
bind-address = 0.0.0.0

如果存在前面两条语句,直接注释掉,因为它们的作用是让 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 这个用户必须被赋予了足够的权限(参考用户管理部分)。

如果无法成功连接远程主机,检查一下远程服务器防火墙的 3306 端口是否开启,因为 MySQL 是通过这个端口来监听外部消息的。另外,如果服务器安装在内网,远程访问还有可能被路由器防火墙拦截,这个时候就只能联系公司或学校的网络管理人员,看能不能把这个端口打开了。

Python 连接 MySQL

MySQLdb 是 Python 连接 MySQL 最流行的一个驱动,因为它是用 C 语言写成的,效率非常高。它的缺点是由于年久失修,只支持 Python2.x,对于使用 Python3.x 的同学可以用它的 Fork 版本 mysqlclient,它可以完全兼容 MySQLdb。在 MacOS 和 Linux 上,mysqlclient 的安装也很简单,直接用 pip 或 conda 安装就好了:

1
2
pip install mysqlclient
conda install mysqlclient

当然,Python 连接 MySQL 还有很多其他的驱动,感兴趣的同学可以参考 [4] 来了解它们的优缺点。

需要注意的是,即使安装了 mysqlclient,在写 python 代码的时候,也需要 import MySQLdb,而不是 import mysqlclient,否则会报错。

mysqlclient 是用原生 SQL 语言来实现数据库访问任务的,所以要求大家会使用 SQL 语言。下面用一个创建数据库的例子来展示 mysqlclient 的编程实现。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
import MySQLdb
# 打开数据库连接
db = MySQLdb.connect("host_name", "user_name", "password", "database_name", charset='utf8')
# 使用 cursor() 方法获取操作游标
cursor = db.cursor()
# 如果数据表已经存在,使用 execute() 方法删除表
cursor.execute("DROP TABLE IF EXISTS EMPLOYEE")
# 创建数据表SQL语句
sql = """CREATE TABLE employee (
first_name CHAR(20) NOT NULL,
last_name CHAR(20),
age INT,
sex CHAR(1),
income FLOAT)"""
cursor.execute(sql)
# 关闭数据库连接
db.close()

有用链接

[1] mac下配置php+mysql
[2] MySQL创建用户与授权方法
[3] Linux(Ubuntu)下MySQL的安装与配置
[4] 用 Python 连接 MySQL 的几种姿势
[5] Python 操作 MySQL 数据库

Contents
  1. 1. 安装与配置 MySQL
    1. 1.1. Mac
    2. 1.2. Linux
  2. 2. MySQL 用户管理
    1. 2.1. 创建用户
    2. 2.2. 授权
  3. 3. 利用 phpMyAdmin 来管理 MySQL
  4. 4. 远程访问 MySQL
  5. 5. Python 连接 MySQL
  6. 6. 有用链接
|