郑重提示:以下都是本人的经验之谈和个人理解,很可能有偏差之处,请审判性的浏览和借鉴。
卸载之前安装的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显示
自己是直接无密码以root身份进入到了mysql里面了
配置mysql密码
- 第一种方法是在shell中用
mysql_secure_installation命令,按照步骤来可以完成密码强度的玄策,root密码的重置,禁止root远程连接,删除test database等等操作,效果如下(图没有截全):

照理说这个时候root应该需要密码才能登录了,毕竟都显示
all done了。但是很奇怪,这个时候我mysql还是能直接进去,甚至mysql -u root -p之后乱输一通密码还是能进去。搞得我之前一直兢兢业业的mysql -u root -p然后输我刚才设置的密码,还以为设置成功了。。以及之后配置远程连接的时候一直access denied…真让人头大… - 然后开始了接下来的第二种方法
mysql进入mysql中,然后
use mysql;
select user, host, authentication_string from user;
显示如下:
可以看到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;
发现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,修改前:

修改后:

保存后,service mysql restart重启服务,然后netstat -apn查看端口监听情况,之前的状态,127.0.0.1:3306表示只在本地的3306端口开放,LISTEN表示正在监听状态:

修改完成后应该变为:
- 在windows的cmd上进行测试

大功告成。
本文详细介绍了在Ubuntu上卸载旧版MySQL,安装MySQL8.0,配置MySQL密码以及允许远程连接的步骤。在密码设置过程中遇到了问题,通过两种方法最终成功设置了root密码,并实现了远程访问MySQL服务器。最后,通过修改配置文件和重启服务,确认MySQL已开放远程连接。

245

被折叠的 条评论
为什么被折叠?



