Ubuntu24.04 安装MySQL8.0.36 并配置Navicat远程连接
1. 更新系统和软件源
sudo apt update && sudo apt upgrade
2. 安装mysql
sudo apt install mysql-server
# 也可以指定版本如
sudo apt install mysql-server-8.0.36
3. 查看是否安装成功
mysql -V
4. 启动服务
#启动服务
sudo service mysql start
sudo service mysql stop
# 附加一条命令:可以用来查看服务状态
sudo systemctl status mysql
# 可以按q退出
5. 进入mysql
默认是没有密码的,但不能用当前用户进入,而是需要提权
注:需要提权,是因为没有启动服务,如果启动服务,后就不再需要提权了,下面也是。
sudo mysql -uroot -p
此时按两次enter,第二次表示没有密码
6. 修改密码 :首次更改密码,比如这样做
注:此时是进入mysql的命令行模式。
alter user 'root'@'localhost' identified by 'root';
FLUSH PRIVILEGES;
exit;
sudo mysql -uroot -p
仍需要提权,直接输入密码,root,然后按回车键即可进入mysql
7. 重启服务后,就不需要提权,而是直接就可以使用mysql命令进入数据库了。
注:完成这一步后,后续进入mysql,可能需要输入密码,但后面会变正常的。
service mysql restart
注:我发现此时依然需要sudo mysql -uroot -p才能进入mysql,当然需要密码root。
8. 配置远程连接,因为使用Navicat远程访问mysql,所以需要修改MySQL的密码,这是MySQL的密码规则导致的。
有如下方式:
1. 先进入mysql,查看所有数据库
show databases;
2. 选择mysql数据库,use mysql;然后执行如下操作:
use mysql;
3. 允许任何IP远程连接
update user set Host='%' where User='root';
4. 设置密码规则
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root';
5. 设置远程访问--首先进入mysql
grant all privileges on *.* to 'root'@'%' with grant option;
6. 进行指令刷新
flush privileges;
7. 退出mysql
exit;
8. 注释掉mysqld.cnf中bind-address=127.0.0.1
打开文件etc/mysql/mysql.conf.d/mysqld.cnf
sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
设置成如下内容,即将其注释掉。要求会用vi或vim编辑文件和保存
#bind-address=127.0.0.1
mysqlx-bind-address = 127.0.0.1
9. 重启服务
sudo service mysql restart
注:如果在设置密码规则时报这样的错误Operation ALTER USER failed for ‘root‘@‘%‘,解决方法见本文下面的附注
注:重启服务后,可以使用mysql -uroot -p来进入,而不再需要sudo提权。
10. 或许要设置开机自启动
sudo update-rc.d -f mysql defaults
11. win下Navicat远程访问linux上的mysql
附注:
1.错误Operation ALTER USER failed for ‘root‘@‘%‘,解决方法
1、连接服务器: mysql -u root -p
2、看当前所有数据库:show databases;
3、进入mysql数据库:use mysql;
4、查看mysql数据库中所有的表:show tables;
5、查看user表中的数据:select Host, User from user;
6、修改user表中的Host: update user set Host='%' where User='root';
说明: % 代表任意的客户端,可替换成具体IP地址。
7 、注意:一定要记得在写sql的时候要在语句完成后加上" ; "
8、 修改密码:ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root';
9、最后刷新一下:flush privileges;