通过阿里云ECS服务器安装Mariadb(MySQL)具体过程及Navicat远程连接

经过一下午的不懈努力,终于在阿里云上安装了mariadb,并通过Navicat远程连接上了阿里云mariadb数据库。本人也是一步一步通过百度查查查才安装上的,一点点爬坑填坑,因此在这里记录一下,以备以后使用。

1. 安装mariadb

本人使用的服务器是Ubuntu 16.04.3版本,因为我之前安装过MySQL,怕两个数据库有冲突,所以就先把MySQL给卸载了,再安装Mariadb。

安装过程共需两步:
(1)sudo apt update
通过阿里云ECS服务器安装Mariadb(MySQL)具体过程及Navicat远程连接_第1张图片
(2)sudo apt install mariadb-server
通过阿里云ECS服务器安装Mariadb(MySQL)具体过程及Navicat远程连接_第2张图片
通过阿里云ECS服务器安装Mariadb(MySQL)具体过程及Navicat远程连接_第3张图片
执行完上面两步mariadb就安装完了,第一次安装的话用户名是root,没有密码,执行以下语句执行对数据库的初始化,比如设置密码:
mysql_secure_installation
通过阿里云ECS服务器安装Mariadb(MySQL)具体过程及Navicat远程连接_第4张图片
执行上面这条语句过程中应该还有一堆我也不懂什么选项,反正一路y就行了。

启动数据库:sudo mysql -uroot -p
关闭数据库:Ctrl+C(键盘)
重启数据库:service mysql restart

启动数据库之后看看能不能进入到数据库中,笔者到这一切都是顺利的。

2. Navicat远程连接数据库

打开Navicat ,新建连接(选mariadb那项)。在常规中,连接名随便起,主机名填localhost,端口填3306,用户名和密码分别对应阿里云上的数据库中对应的用户名和密码。

通过阿里云ECS服务器安装Mariadb(MySQL)具体过程及Navicat远程连接_第5张图片

在SSH中,使用SSH通道前打钩,主机名或IP地址填阿里云的公网ip,端口填22,用户名和密码分别对应阿里云的用户名和密码。
通过阿里云ECS服务器安装Mariadb(MySQL)具体过程及Navicat远程连接_第6张图片
点击连接测试,若显示连接成功,就说明远程连接数据库成功了。

3. Navicat远程连接数据库时遇到的问题

笔者在实际测试连接时经常报这个错误:2013 - lost connection to mysql server at ‘reading initial communication packet’,system error:0 …"错误

主要原因是没有为其他主机远程连接数据库开放权限
解决方法:

  1. 在客户端测试与数据库服务器的连通性:ping一下公网ip,确认客户机与服务器之间的网络连通是没有问题的。

  2. 选择mysql数据库进行操作 :MariaDB [(none)]> use mysql;
    通过阿里云ECS服务器安装Mariadb(MySQL)具体过程及Navicat远程连接_第7张图片

  3. 查看user,password,host这三个字段的权限分配情况: MariaDB [mysql]> select user,password,host from user;
    通过阿里云ECS服务器安装Mariadb(MySQL)具体过程及Navicat远程连接_第8张图片
    通过以上输出可以看出数据库默认只允许用户root在本地服务器(localhost)上登录,不允许其他主机远程连接。

  4. 允许用户root使用密码(123456)在任何主机上连接该数据库,并赋予该用户所有权限。
    MariaDB [mysql]> grant all privileges on . to root@"%" identified by “123456”;
    MariaDB [mysql]> flush privileges;
    在这里插入图片描述

  5. 再执行 MariaDB [mysql]> select user,password,host from user;
    通过阿里云ECS服务器安装Mariadb(MySQL)具体过程及Navicat远程连接_第9张图片
    新加入的行中的“%”就意味着任何主机都被允许连接数据库,这样数据库的访问权限就设置好了。

重启数据库,再点击测试连接,这回就连接成功了。

网上还有一种解决方法:在/etc/mysql/my.cnf中的[mysqld]下添加skip-name-resolve
service mysql restart重启mysql.
笔者在实际操作过程中没在my.cnf中找到mysqld,于是自己加了一个,并在下面输入skip-name-resolve,重启mysql,在没执行上述5步方法前,并不好使。。。

把项目需要的表导进去吧,又可以愉快的进行项目开发了!

你可能感兴趣的:(Aliyun)