0%

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 语句来操作数据库了。需要注意的是,此时只能本机访问 mysql,远程主机访问的设置后面将会讲到。

Linux

Linux 上的安装我只测试过[8]中介绍的 CentOS 安装,Ubuntu 没有亲自实验,有兴趣的可以参考 [3] 中介绍的方法。

1
2
3
4
5
6
7
8
9
10
11
12
# 下载 mysql 的 repo 源
wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm
# 安装mysql-community-release-el7-5.noarch.rpm包
sudo rpm -ivh mysql-community-release-el7-5.noarch.rpm
# 安装 mysql 服务器
sudo yum install mysql-server
# 如果要安装客户端
sudo yum install mysql-community-client
# 开启 mysql 服务
service mysql start
# 使用 root 进入 mysql
mysql -u root

注意此时的 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
2
mysqladmin -u root password
service mysql restart

使用宝塔面板

宝塔面板[6]是一个可视化安装工具,可以通过浏览器一键安装 Apache 和 mysql 等常用网络工具。其安装也非常简单,执行以下两条命令:

1
2
wget -O install.sh http://download.bt.cn/install/install_6.0.sh
sh install.sh

面板默认端口为8888,可以通过浏览器进行访问。需要注意的是,宝塔面板目前只支持 python 2,如果系统安装了 python 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 通过网页进行管理。phpMyAdmin 的安装非常简单。

Mac

首先下载网页文件,并解压到 /Library/WebServer/Documents/ 目录下,完整的目录为:/Library/WebServer/Documents/phpmyadmin/。该目录为 Apache PHP 的文件目录,由于 Mac 中已经预装了 Apache 和 PHP,所以这里只需要把下载下来的文件放到 Apache 服务器文件目录就好了。

Linux

纯净的 Linux 系统一般没有预装 Apache 和 PHP,因此需要手动安装。

  1. 安装 Apache
    正常可以使用以下命令安装[7]
    1
    yum install -y httpd

如果上面命令出现 No package httpd available 问题,可以尝试使用以下命令

1
yum --disableexcludes=all install -y httpd

然后配置并启动 Apache 服务

1
2
3
4
5
6
7
8
# 设置开机自动启动
systemctl enable httpd.service
# 手动启动
systemctl start httpd.service
# 手动停止
systemctl stop httpd.service
# 手动重启
systemctl restart httpd.service

此时在浏览器输入服务器 ip 地址就能打开 Apache 的引导页了。

  1. 安装 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
  2. 安装 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
  3. 安装 php-mysqli
    如果到此为止,登录 phpmyadmin 时可能提示缺少 php-mysqli,因此需要先安装一个 php-mysqli 包:

    1
    yum install php-mysqli

配置

进入 phpamyadmin 目录,输入命令:

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

修改以下两项:

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

在浏览器中输入URL: http://localhost/phpmyadmin/便可以进入 phpmyadmin 登录界面。输入用户名 root 和之前设置的密码,就可以登录到 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 这个用户必须被赋予了足够的权限(参考用户管理部分)。

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

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

如果安装过程中报错,可能是缺少 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
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 数据库
[6] 宝塔面板
[7] CentOS 7下Apache的安装
[8] CentOS7 64位安装mysql教程,亲测完美
[9] CentOs 7 安装PHP开发环境
[10] Centos 下 phpMyAdmin 安装
[11] MySQL本地可以连接,远程连接不上的问题

本文标题:MySQL+phpMyAdmin 安装与使用方法

文章作者:Zhikun Zhang

发布时间:2018年10月23日 - 23:41:35

最后更新:2020年05月16日 - 01:48:34

原始链接:http://zhangzhk.com/2018/10/23/mysql-tutorial/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。