ubuntu 18.04安装mysql相较ubuntu 16.04会有一些问题出现,在此记录这一安装及配置过程。
sudo apt-get install mysql-server 执行完成后即可,安装后默认是启动了mysql服务的
首次登录时,mysql的用户名和密码在 /etc/mysql/debian.cnf 内写着
使用以上用户名和密码即可登录数据库了,如:
mysql -u debian-sys-maint -pLU2R2jGXF5NkUGIN
注意查看各自的用户名和密码
use mysql;
update mysql.user set authentication_string=password('root') where user='root' and Host='localhost';
执行上述语句可能会报错Your password does not satisfy the current policy requirements
解决办法:
1、查看mysql密码策略
SHOW VARIABLES LIKE 'validate_password%';
修改策略
set global validate_password_policy=LOW;# 设置密码的验证强度等级 LOW
set global validate_password_length=5;# 设置密码长度,自行指定
然后再执行上边的修改root密码语句,再执行下边的语句
update user set plugin="mysql_native_password";
flush privileges;
quit;
之后就可以使用root用户和刚才设置的密码登录了。
进入mysql执行命令:
UPDATE mysql.user SET host="%" WHERE user="root"; #设置允许root账号可以在任意host登录
grant all privileges on *.* to root@'%' identified by '12345678' with grant option;
flush privileges;
quit;
修改mysql配置文件
sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
查看防火墙是否允许3306端口被访问
sudo ufw status# 查看防火墙状态,如果关闭状态,就无需设置端口了
# 如果开启防火墙了,添加允许规则如下
sudo ufw allow 3306/tcp
# 关闭防火墙命令
sudo ufw disable
# 开启防火墙
sudo ufw enable
以上配置完成后,即可远程登录mysql了
如果用Navicat远程访问的时候报1698 access denied for user 'root'@'' mysql……错误
sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
然后在这个配置文件中的[mysqld]这一块中加入skip-grant-tables这句话。
保存:wq,退出。输入:service mysql restart,重新启动mysql。