预期:在 VPS 安装 mysql,支持中文,能通过远程客户端连接。
安装
一句话的事情:
$ sudo apt-get install mysql-server mysql-client
安装好後,可以通过 Debian package 工具查看具体内容:
$ dpkg --list | grep mysql
ii libmysqlclient20:amd64 5.7.22-0ubuntu18.04.1 amd64 MySQL database client library
ii mysql-client 5.7.22-0ubuntu18.04.1 all MySQL database client (metapackage depending on the latest version)
ii mysql-client-5.7 5.7.22-0ubuntu18.04.1 amd64 MySQL database client binaries
ii mysql-client-core-5.7 5.7.22-0ubuntu18.04.1 amd64 MySQL database core client binaries
ii mysql-common 5.8+1.0.4 all MySQL database common files, e.g. /etc/mysql/my.cnf
ii mysql-server 5.7.22-0ubuntu18.04.1 all MySQL database server (metapackage depending on the latest version)
ii mysql-server-5.7 5.7.22-0ubuntu18.04.1 amd64 MySQL database server binaries and system database setup
ii mysql-server-core-5.7 5.7.22-0ubuntu18.04.1 amd64 MySQL database server binaries
安装 MySQL Workbench:
$ sudo apt install mysql-workbench
编码设置
编码设置默认是 latin1 的,如果不更改设置的话,中文支持将成问题。按照《Ubuntu 上安装 MySQL 後设置字符集》改成 utf8 就行了。需要注意的是,在创建 database 实例时,仍然需要注意编码的设置。
创建用户
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'
(注意,即使是本地使用,也应该上面的授权语句,而不是 @localhost)
授权後刷新:
flush privileges;
注意,创建数据库和表时,需要设置好编码:
create database pis CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
CREATE TABLE new_table (id INT) CHARSET utf8 COLLATE utf8_general_ci;
(详细参看《MySQL Server 安装後的字符集设置》)
远程访问问题
数据库缺省是无法远程访问的,是因为远程用户(%)没有创建,查得设置方法如下:
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
参:
卸载
通过指令
$ sudo apt purge ...
删除即可,具体的软件包名称,由前述 dpkg --list | grep mysql
查得,可以先删几个 package,再检查,再删,如此反复,最终删完。