系统:

  • Ubuntu 16.04
  • MySQL 5.7.27

安装:

Ubuntu 下通过apt安装

#    更新软件包索引
apt-get update
#    安装 mysql-server
sudo apt-get install mysql-server

安装好后执行以下命令确认 mysql正常运行

service mysql status


上面默认安装了服务器上的最新版本,我们也可以指定版本安装

# 查询服务器上所有来源可安装的版本
apt-cache madison mysql-server
# 安装来源中存在的版本
apt-get install mysql-server=5.7.11

远程连接使用:

用客户端工具连接,如果很长时间未响应,并提示Operation timed out连接超时,检查服务器的防火墙和服务商的安全组,将3306(默认)端口放行

# ubuntu 默认防火墙
ufw allow 3306

如果服务器响应很快,并提示Connection refused连接被重置的错误,则应修改以下配置文件,并将该行注释

bind-address            = 127.0.0.1
#/etc/mysql/mysql.conf.d/mysqld.cnf
#    重启mysql服务
service mysql restart

如果提示以下

Host '114.*.*.*' is not allowed to connect to this MySQL server
或
Access denied (权限失败)

则是mysql权限的问题,在服务器上用root用户登陆mysql

mysql -u root -p

新建可远程连接用户

create user 'test'@'localhost' identified by '123456';
#    这里 test 是新用户名,localhost是允许登陆的地址,可以换为具体IP,或者 % 允许所有外网连接,如下
create user 'test'@'%' identified by '123456';
#    注意@不要在引号里

修改已有用户使其可远程连接

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;
# 把root用户改为 % ,并赋予所有数据库权限

删除用户

drop user 'username'@'locaclhost'

给用户分配对应数据库权限

grant all privileges on `test`.* to 'test'@'%' identified by '123456' with grant option;
# 给 test@% 用户分配了 test 数据库权限
# 数据库名要用反引号包裹

修改完配置刷新数据库

flush privileges;