ubuntu mysql8.0安装 配置远程连接

郑重提示:以下都是本人的经验之谈和个人理解,很可能有偏差之处,请审判性的浏览和借鉴。

卸载之前安装的mysql

# 删除之前的配置文件
rm -r /var/lib/mysql
rm -r /etc/mysql
# 卸载mysql
# apt-get remove 会删除软件包而保留软件的配置文件
# apt-get purge 会同时清除软件包和软件的配置文件
apt-get autoremove mysql* --purge
# apparmor(application armor),linux内核中的强制访问控制系统,
# 我没发现有什么用,但是在看别人的教程中用到了这一步,我照做的时候也成功了
apt-get remove apparmor

安装mysql

apt update
apt install mysql-server

安装完后直接mysql就可以无密码进入mysql中,输入status显示ubuntu mysql8.0安装 配置远程连接_第1张图片
自己是直接无密码以root身份进入到了mysql里面了

配置mysql密码

  • 第一种方法是在shell中用mysql_secure_installation命令,按照步骤来可以完成密码强度的玄策,root密码的重置,禁止root远程连接,删除test database等等操作,效果如下(图没有截全):
    ubuntu mysql8.0安装 配置远程连接_第2张图片
    照理说这个时候root应该需要密码才能登录了,毕竟都显示ubuntu mysql8.0安装 配置远程连接_第3张图片
    all done了。但是很奇怪,这个时候我mysql还是能直接进去,甚至mysql -u root -p之后乱输一通密码还是能进去。搞得我之前一直兢兢业业的mysql -u root -p然后输我刚才设置的密码,还以为设置成功了。。以及之后配置远程连接的时候一直access denied…真让人头大…
  • 然后开始了接下来的第二种方法
    mysql进入mysql中,然后
use mysql;
select user, host, authentication_string from user;

显示如下:ubuntu mysql8.0安装 配置远程连接_第4张图片
可以看到root的authentication_string字段是空的,说明还没有密码,果然之前没有设置成功。接着使用

# 如果提示密码不符合策略,则需要把密码改的复杂一点,同时包含数字大小写字母,特殊字符,长度大于等于8
alter user 'root'@'localhost' identified with mysql_native_password by '自己的新密码';
# 以下是几次错误的尝试
# mysql8中没有PASSWORD函数,输入后语法错误
alter update user set authentication_string=PASSWORD('12345678') where user='root';
# 输入后没有任何异常,但是查看user表发现root的authentication_string字段没有变化,依然是空
alter user 'root'@'localhost' identified by '12345678';

之后再执行select user, host, authentication_string from user;ubuntu mysql8.0安装 配置远程连接_第5张图片
发现root的authentication_string字段已经有东西了,说明修改密码成功了。然后:

# flush privileges 命令本质上的作用是将当前user和privilige表中的用户信息/权限设置从mysql库 (MySQL数据库的内置库)中提取到内存里。 
# MySQL用户数据和权限有修改后,希望在"不重启MySQL服务"的情况下直接生效,那么就需要执行这个命令
flush privileges;
# 退出数据库
exit;

再次使用mysql登录,显示:在这里插入图片描述
使用mysql -u root -p登录,密码乱输,显示:在这里插入图片描述
OK, 大功告成。

配置远程连接

  • 第一步,修改root用户为所有ip可以访问。
    mysql -u root -p进入, 然后use mysql;,然后
# 之前默认的host是localhost只能本地访问,%表示所有ip都可以访问,也可以改为指定ip
update user set host='%' where user='root';
# root用户授权,*.*表示所有数据库的所有表,前一个*表示数据库名,后一个*表示表名
# ’root'@'%'表示被授权的用户
grant all privileges on *.* to 'root'@'%';
flush privileges;
exit;
  • 第二步,修改配置文件
    vim /etc/mysql/mysql.conf.d/
    修改此处的bing-address为0.0.0.0,修改前:
    ubuntu mysql8.0安装 配置远程连接_第6张图片
    修改后:
    ubuntu mysql8.0安装 配置远程连接_第7张图片
    保存后,service mysql restart重启服务,然后netstat -apn查看端口监听情况,之前的状态,127.0.0.1:3306表示只在本地的3306端口开放,LISTEN表示正在监听状态:
    在这里插入图片描述
    修改完成后应该变为:在这里插入图片描述
  • 在windows的cmd上进行测试
    ubuntu mysql8.0安装 配置远程连接_第8张图片
    大功告成。

你可能感兴趣的:(环境配置#mysql,ubuntu,mysql,linux)