No Data

ubuntu22.04安装mysql8.0

原创  作者:斩雪碎光阴  发布于:2024年09月04日  阅读量:284
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
  分类:  标签:

1.查看软件源中可以安装的mysql版本

apt-cache policy mysql-server


如果版本不对:

需要安装对应版本的mysql软件源,例如:

下载二进制Mysql软件配置源的安装包

wget https://repo.mysql.com//mysql-apt-config_0.8.12-1_all.deb

在当前主机上安装mysql源

sudo dpkg -i mysql-apt-config_0.8.12-1_all.deb

安装界面,选择第一个,回车进入下一个界面

跳转到下一个界面,然后选择自己想安装的版本

然后选择 OK 退出选择界面

更新软件源

sudo apt update

可能会出现没有公钥的错误

输入如下指令安装公钥

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 467B942D3A79BD29

重新更新软件源

sudo apt update


2.安装

更新包列表

sudo apt update

安装MySQL 服务器

sudo apt install mysql-server

安全配置MySQL:

sudo mysql_secure_installation

在安装过程中,系统会提示您设置MySQL的root用户密码,以及配置其他安全选项,如删除匿名用户、禁止root用户远程登录等。按照提示操作即可完成安全配置。

启动MySQL服务

sudo systemctl start mysql

重启MySQL服务

sudo systemctl restart mysql

登录MySQL以确保一切正常

mysql -h localhost -u root -p

mysql -u root -p

sudo mysql -u root -p


3.修改localhost登录密码

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';

root是用户名,123456是要设置的密码


修改密码报错:

ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

密码太过简单,不符合密码设计要求。

查看现有代码设计规则

SHOW VARIABLES LIKE 'validate_password%';

修改策略

set global validate_password.policy=LOW;

set global validate_password.length=1;

其中,validate_password_policy取值:

0 or LOW     只验证长度;

1 or MEDIUM  验证长度、数字、大小写、特殊字符;

2 or STRONG  验证长度、数字、大小写、特殊字符、字典文件;


连数据库报错:

Error No. 1251

client does not support authentication protocol requested by server;

consider upgrading MySQL client

原因:

mysql8 之前的版本中加密规则是mysql_native_password,而在mysql8之后,加密规则是caching_sha2_password

解决方法:

把mysql用户登录密码加密规则还原成mysql_native_password


4.解决外部无法访问问题


ubuntu查看mysql端口号

使用netstat命令:

sudo netstat -tulnp | grep mysql


ubuntu开放端口命令

使用ufw:

如果您的Ubuntu系统已经安装了ufw,您可以使用它来开放端口。例如,要开放端口12345,您可以使用以下命令:

sudo ufw allow 12345/tcp


修改配置文件

/etc/mysql/mysql.conf.d/mysqld.cnf

bind-address = 127.0.0.1

mysqlx-bind-address= 127.0.0.1

修改为

bind-address= 0.0.0.0

mysqlx-bind-address= 0.0.0.0

cp /etc/mysql/mysql.conf.d/mysqld.cnf /home/yanyu

sudo cp /home/yanyu/mysqld.cnf /etc/mysql/mysql.conf.d


检查MySQL用户权限:

确保root用户有权限从非localhost登录。你可以登录MySQL然后使用这个SQL命令查看用户权限:先登录mysql -u root -p,然后切换到mysql数据库use mysql,查看SELECT User,Host FROM mysql.user。如果root用户的host字段是localhost,那么你需要更改权限让root用户可以从任何主机登录。

我们改过来:

我们需要首先更改用户的主机设置,然后再更新用户的密码。可以按照以下步骤操作:

创建一个允许从任何主机登录的root用户:

CREATE USER 'root'@'%'  IDENTIFIED BY '123456';

root是 用户名,123456时密码

如果想要更改密码可以用:

ALTER USER 'root'@'%' IDENTIFIED BY '123456';

授予新用户所有权限:

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;

刷新权限:

FLUSH PRIVILEGES;

查看查看用户权限发现多了一个'root'@'%',这就是正常的


修改登录密码

ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';

相关文章