1. 下载安装包
$ wget https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-server_5.7.27-1ubuntu16.04_amd64.deb-bundle.tar
2. 解压安装包
$ mkdir mysql_deb
$ tar -xvf ./mysql-server_5.7.27-1ubuntu16.04_amd64.deb-bundle.tar -C ./mysql_deb
解压后得到以下文件:
$ ls mysql_deb
mysql-server_5.7.27-1ubuntu16.04_amd64.deb
mysql-testsuite_5.7.27-1ubuntu16.04_amd64.deb
mysql-common_5.7.27-1ubuntu16.04_amd64.deb
mysql-community-source_5.7.27-1ubuntu16.04_amd64.deb
mysql-client_5.7.27-1ubuntu16.04_amd64.deb
libmysqlclient20_5.7.27-1ubuntu16.04_amd64.deb
libmysqld-dev_5.7.27-1ubuntu16.04_amd64.deb
mysql-community-server_5.7.27-1ubuntu16.04_amd64.deb
libmysqlclient-dev_5.7.27-1ubuntu16.04_amd64.deb
mysql-community-client_5.7.27-1ubuntu16.04_amd64.deb
mysql-community-test_5.7.27-1ubuntu16.04_amd64.deb
3. 使用dpkg安装依赖包
缺少包时看一下错误信息,然后使用apt-get安装一下即可
$ cd mysql_deb
$ sudo dpkg -i mysql-common_5.7.27-1ubuntu16.04_amd64.deb
$ sudo dpkg -i libmysqlclient20_5.7.27-1ubuntu16.04_amd64.deb
$ sudo dpkg -i libmysqlclient-dev_5.7.27-1ubuntu16.04_amd64.deb
$ sudo dpkg -i libmysqld-dev_5.7.27-1ubuntu16.04_amd64.deb
- 安装依赖,否则接下来安装会报错
$ sudo apt-get install libaio1
- 继续安装以下内容
$ sudo dpkg -i mysql-community-client_5.7.27-1ubuntu16.04_amd64.deb
$ sudo dpkg -i mysql-client_5.7.27-1ubuntu16.04_amd64.deb
$ sudo dpkg -i mysql-community-source_5.7.27-1ubuntu16.04_amd64.deb
- 接下来我们需要安装mysql-community-server包了,安装之前还需要按照一个依赖包:libmecab2。如已安装过请忽略。
$ sudo apt-get install libmecab2
$ sudo dpkg -i mysql-community-server_5.7.27-1ubuntu16.04_amd64.deb
- 安装过程中需要设置mysql的root账号密码
4. 修改存储引擎及默认编码等信息
- 将以下内容添加到mysql配置文件末尾(默认路径:
/etc/mysql/mysql.conf.d/mysqld.cnf
)
default-storage-engine=INNODB
init_connect='SET NAMES utf8mb4'
character-set-server = utf8mb4
character-set-client-handshake = FALSE
collation-server = utf8mb4_general_ci
5. 配置远程登录
- 将
bing-address = 127.0.0.1
修改为bind-address = 0.0.0.0
- 重启服务
$ sudo service mysql restart
6. 其他问题
- 使用 root 账号登录失败,报错
$ mysql -uroot -p
mysql: [Warning] Using a password on the command line interface can be insecure.
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
解决方法:
- 将以下内容添加到mysql配置文件
/etc/mysql/mysql.conf.d/mysqld.cnf
的[mysqld]
下面
skip-grant-tables
- 重启mysql服务,登录mysql(此时登录无需输入密码)
$ mysql -uroot
- 执行SQL
mysql> update mysql.user set host = '%' where user = 'root';
mysql> FLUSH PRIVILEGES;
- 修改配置文件
/etc/mysql/mysql.conf.d/mysqld.cnf
,删掉skip-grant-tables
- 重启mysql服务,即可