Ubuntu18.04:MySQL: 5.7安装与卸载并配置远程登录(服务器装Mysql5.7一条龙服务)
UbuntuMySQL: 5.7安装与卸载
卸载
sudo apt-get autoremove --purge mysql-server-5.7
sudo apt-get remove mysql-server
sudo apt-get autoremove mysql-server
sudo apt-get remove mysql-common
sudo rm -rf /etc/mysql/ /var/lib/mysql #很重要
#清理残留数据
dpkg -l |grep ^rc|awk '{print $2}' |sudo xargs dpkg -P
sudo apt autoremove
sudo apt autoclean
安装
1 sudo apt-get install mysql-server
2 sudo apt-get install mysql-client
3 sudo apt-get install libmysqlclient-dev
使用:
-
启动服务(我看也有
sudo service mysql start
来启动的)sudo /etc/init.d/mysql start #或 sudo service mysql start
-
登录
mysql5.7
在我这个版本中默认是免密登录,是非常不安全的,必须设置密码登录用以下指令可以看到可以默认设置中的用户登录的用户名密码,复制用户名密码进行登录
mysql -u 用户名 -p #输入密码
在
MySQL 5.7
中password
字段已从mysql.user
表中删除,新的字段名是“authenticalion_string
”.先检查一下
root
的plugin
字段是否为mysql_native_password
use mysql; select user, plugin from user;
这是我现在的值(开始的时候我的root的plugin字段就是’auth_socket‘ 修改语句“
update user set plugin='mysql_native_password' where user='123456';
+------------------+-----------------------+ | user | plugin | +------------------+-----------------------+ | root | mysql_native_password | | mysql.session | mysql_native_password | | mysql.sys | mysql_native_password | | debian-sys-maint | mysql_native_password | +------------------+-----------------------+
- 修改密码
update user set authentication_string=password('newPwd') where user='root'; flush privileges; #刷新mysql权限
- 新密码登录
1 mysql -u root -p 2 #输入密码即可
配置远程登录
在这里我发现虽然给
root
设置了密码,但是还是可以直接免密登录,所以问题并不是出在这里
通过一些途径我知道数据库的监听端口虽然是3306可是仅限制在
127.0.0.1
本地访问以下是解决办法
-
首先修改配置文件,因为
5.7
版本不会生成my.cnf
文件,他的配置文件是vim /etc/mysql/mysql.conf.d/mysqld.cnf
并把
bind-address
注释掉
#不适用本版本(mysql5.7)vi /etc/mysql/my.cnf
vim /etc/mysql/mysql.conf.d/mysqld.cnf
/etc/init.d/mysql restart # 重启
为需要远程登录的用户赋予权限
- 新建用户远程连接mysql数据库
grant all on *.* to admin@'%' identified by '123456' with grant option;
flush privileges;
允许任何ip地址(%表示允许任何ip地址
)的电脑用admin帐户和密码(123456)来访问这个mysql server。
注意admin账户不一定要存在。
-
支持root用户允许远程连接mysql数据库
update user set host="%" where user="root"; //目的就是把用户的host修改为%,不是localhost就能远程访问了
我会写代码+代码改变世界=我会改变世界!
为什么要改变世界?
如果无法改变世界,那么,世界就会改变我......