Ubuntu18.04安装MySQL5.7 并配置远程登录、utf8mb4字符集

2019/11/19, Ubuntu Server 18.04,MySQL 5.7

摘要:Ubuntu Server 18.04 安装MySQL 5.7 并配置远程登录、utf8mb4字符集

由于MySQL官方下载最新版8.0速度很慢,使用阿里云软件源中的MySQL5.7版本

配置软件源

使用阿里云镜像源-配置教程

安装MySQL5.7

更新软件源并安装mysql-server(默认5.7.28版本,可以使用apt-cache madison mysql-server命令查看mysql-server在镜像源中的版本)

sudo apt-get update
sudo apt-get install -y mysql-server

安装完成后,可以使用

mysql -V

查看当前MySQL版本

配置MySQL

MySQL 5.7安装完成后普通用户不能进mysql,原因:root的plugin被修改成了auth_socket,用密码登陆的plugin应该是mysql_native_password

登录数据库

使用root权限登录MySQL(如果无法使用root权限登录,可以使用安装时默认生成的账户,教程)

sudo mysql

修改密码及登录设置

#切换mysql数据库
use mysql;
#修改root账号密码
update user set authentication_string = password('你的密码'), password_expired = 'N', password_last_changed = now() where user = 'root';
#不限制root账户登录来源(任意地址都能登录)
update user set host='%' where user='root';
#使用原生密码验证登录
update user set  plugin="mysql_native_password";
#刷新权限
flush privileges;
#退出
exit;

修改登录来源地址

修改配置文件,注释掉bind_ip_address

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

找到bind-address = 127.0.0.1,注释掉该行:

修改完成后,MySQL登录来源不再限于127.0.0.1

修改字符集

MySQL对于my.cnf配置文件的搜索顺序是/etc/my.cnf /etc/mysql/my.cnf ~/.my.cnf
其中/etc/mysql/my.cnf里有两行文字:

1.注释中写了复制本文件到/etc/mysql/my.cnf可以作为全局设定,复制到~/.my.cnf可以作为用户指定设定
2.红色框中,指定包含了/etc/mysql/conf.d/ /etc/mysql/mysql.conf.d/两个文件夹中的配置文件(includedir是包含文件夹的意思,但是前面又加了个"!",验证发现这两个文件夹的配置肯定是包含的,但是不明白为什么要有感叹号,像是编程中的“非”的意思)

我这里暂时把/etc/mysql/conf.d/mysql.cnf作为主配置文件,如有问题随时修改该文章

sudo vi /etc/mysql/conf.d/mysql.cnf

将以下内容写入文件:

[mysqld]
character-set-server = utf8mb4
#关闭dns解析(注意:这会造成只能使用ip远程连接MySQL)
skip-name-resolve

[client]
default-character-set = utf8mb4

[mysql]
default-character-set = utf8mb4

保存退出。
配置文件中,添加了skip-name-resolve关闭了dns域名解析(因为内网环境无法解析,参考文档

重启MySQL服务

sudo service mysql restart

此时本地使用mysql -u root -p登录或远程登录都可以(注意是否开启防火墙以及防火墙是否开启3306端口)

原文地址:https://www.cnblogs.com/kasnti/p/11888840.html