参考:https://www.cnblogs.com/thinkingandworkinghard/p/7813504.html
1.安装mysql命令
sudo apt-get install mysql-server
sudo apt install mysql-client
sudo apt install libmysqlclient-dev
2.安装成功后可以通过下面的命令测试是否安装成功
sudo netstat -tap | grep mysql
安装成功的图示
3.进入mysql
mysql -uroot -p
如果忘记密码了,可以先跳过密码登录进去,然后重新设置。
编辑mysql的配置文件/etc/mysql/my.cnf,在[mysqld]段下加入一行“skip-grant-tables”。
重启mysql服务: mysql service restart;或者 systemctl restart mysql.service
进入 mysql -uroot -p ;直接entry键进去
user mysql;
执行update mysql.user set authentication_string=password('123456') where user='root' and Host ='localhost';把密码重置为123456。退出数据库管理。
立即刷新权限:flush privileges
退出后,
回到sudo gedit /etc/mysql/mysql.conf.d/mysqld.cnf,把刚才加入的那一行“skip-grant-tables”注释或删除掉。
再次重启mysql服务sudo service mysql restart,使用新的密码登陆,修改成功。
3.让mysql可以远程访问
首先编辑文件/etc/mysql/mysql.conf.d/mysqld.cnf:
保存退出,然后进入mysql服务,执行授权命令:
将root用户授权给所以连接:grant all privileges on *.* to 'root'@'%' identified by 'xxxxxx';
最后一个为mysql密码
让权限立即生效:flush privileges;
到此所以操作完成,可以在任何主机连接此mysql数据库服务器了。
这里面可能会碰到 3306 端口被防火墙屏蔽的问题。
首先查看端口是否打开 netstat -an|grep 3306
打开mysql配置文件vim /etc/mysql/mysql.conf.d/mysqld.cnf
将bind-address = 127.0.0.1注释掉
重启动ubuntu
再次查看端口是否打开 netstat -an|grep 3306
最后还是无法通过本地的navicat连接到mysql,并且报错如下:
报错很明显,说的是未知的连接,所以说可能是ip错误、端口错误或者是没有开启远程连接权限
但是在以上已经打开了远程连接权限,ip和端口也都没问题,到底什么地方错了?
经过查看博客才发现,阿里云上的服务器为对外暴露3306的端口
设置方法:(1)登陆阿里云进入控制台点击左侧 云服务ESC
上面在添加 填写安全规则时,协议类型选了mysql3306后端口自动填写,授权对象填写0.0.0.0/0即可。
最后在通过navicat连接就可以了