IT Notes‎ > ‎Database‎ > ‎MySQL‎ > ‎

mysql: install and setup on my VPS

预期:在 VPS 安装 mysql,支持中文,能通过远程客户端连接。

安装

一句话的事情:sudo apt-get install mysql-server mysql-client

编码设置

编码设置默认是 latin1 的,如果不更改设置的话,中文支持将成问题。按照《Ubuntu 上安装 MySQL 后设置字符集》改成 utf8 就行了。

创建用户

create user 'pis'@'localhost' identified by 'passwordHere';//只能从本地机器访问的帐户
create user 'pis'@'%' identified by 'passwordHere';//任意机器可以访问的帐户(除了 Ubuntu, 在 Debian 和 Windows 机器上,用户名和主机名都必须放在单引号中。)

(似可以忽略的部分)授权
GRANT GRANT OPTION ON *.* TO 'pis'@'127.0.0.1';
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER ON *.* TO 'pis'@'127.0.0.1';
这两句是在用 mysql workbench 时,自动生成的 SQL。奇怪的是,虽然这里执行成功了,但后面直接用新建的用户创建数据库并不成功。


创建数据库

新建的用户 pis 登录后,虽然按上面执行了授权的两语句,但事实上并不能创建数据库,可以换一个思路:用 root 创建需要的数据库,然后把数据库的一切操作权限分配给用户 pis。思路来源:《MySql 新建用户与数据库的实际操作步骤》,感谢 51cto.com。

create database pis;
grant all privileges on pis.* to 'pis'@'%' identified by 'passwordHere'

远程访问问题

数据库缺省是无法远程访问的,是因为远程用户(%)没有创建,查得设置方法如下:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'passwordHere' WITH GRANT OPTION;
GRANT ALL PRIVILEGES ON *.* TO 'pis'@'%' IDENTIFIED BY 'passwordHere' WITH GRANT OPTION;
这两句也带来一个隐患,就是把所有权限都赋过去了。

以上设置也可能还是无效的,那么,还应该修改配置文件,在 Debian 中,路径是 /etc/mysql/my.cnf,找到下面这行并加上井号注释掉就行了:
bind-address=127.0.0.1

参:
Comments