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';