Ubuntu 18.04 安装 mysql 8.0

更新日期: 2020-11-09 阅读次数: 17406 字数: 410 分类: MySQL

卸载之前安装的 mysql 5.7

sudo apt-get autoremove --purge mysql-server  
sudo apt-get remove mysql-server  
sudo apt-get autoremove mysql-server  
sudo apt-get remove mysql-common

安装 mysql 8.0

首先需要去 mysql 官网

https://dev.mysql.com/downloads/repo/apt/

下载一个 Ubuntu / Debian (Architecture Independent), DEB Package (mysql-apt-config_0.8.10-1_all.deb) 的安装包

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

选择 mysql 8.0,然后退出

sudo apt update
sudo apt install mysql-server

mysql 8.0 的创建账户的语法变更

mysql> CREATE DATABASE mysql8_test;
Query OK, 1 row affected (0.15 sec)

mysql> GRANT ALL PRIVILEGES ON mysql8_test.* TO 'mysql8_test'@'localhost' IDENTIFIED BY 'password';
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'IDENTIFIED BY 'password'' at line 1

mysql 8.0 里,正确的做法是先创建一个用户

create user 'mysql8_test'@'%' identified by 'password';

再进行授权

grant all privileges on *.* to 'mysql8_test'@'%' with grant option;

一些 mysql 8.0 的奇葩问题

mysql> create user 'mysql8_test'@'%' identified by 'password';
ERROR 1146 (42S02): Table 'mysql.role_edges' doesn't exist

需要升级解决

sudo mysql_upgrade -u root -p 

然后,等待更新完成即可

Checking if update is needed.
Checking server version.
Running queries to upgrade MySQL server.
Upgrading system table data.
Checking system database.
mysql.columns_priv                                 OK
mysql.component                                    OK
mysql.db                                           OK
mysql.default_roles                                OK
mysql.engine_cost                                  OK
mysql.func                                         OK
mysql.general_log                                  OK
mysql.global_grants                                OK
mysql.gtid_executed                                OK
mysql.help_category                                OK
mysql.help_keyword                                 OK
mysql.help_relation                                OK
mysql.help_topic                                   OK
mysql.innodb_index_stats                           OK
mysql.innodb_table_stats                           OK
mysql.ndb_binlog_index                             OK
mysql.password_history                             OK
mysql.plugin                                       OK
mysql.procs_priv                                   OK
mysql.proxies_priv                                 OK
mysql.role_edges                                   OK
mysql.server_cost                                  OK
mysql.servers                                      OK
mysql.slave_master_info                            OK
mysql.slave_relay_log_info                         OK
mysql.slave_worker_info                            OK
mysql.slow_log                                     OK
mysql.tables_priv                                  OK
mysql.time_zone                                    OK
mysql.time_zone_leap_second                        OK
mysql.time_zone_name                               OK
mysql.time_zone_transition                         OK
mysql.time_zone_transition_type                    OK
mysql.user                                         OK
Found outdated sys schema version 1.5.1.
Upgrading the sys schema.
Checking databases.
sys.sys_config                                     OK
Upgrade process completed successfully.
Checking if update is needed.

对于密码强度要求很高

mysql> create user 'mysql8_test'@'%' identified by 'password';
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

mysql>  create user 'mysql8_test'@'%' identified by 'Password123!';
Query OK, 0 rows affected (0.12 sec)

与时俱进

查看 ubuntu 20.04 apt 安装 mysql 8.0

参考

https://blog.csdn.net/iversonx/article/details/80341596

关于作者 🌱

我是来自山东烟台的一名开发者,有敢兴趣的话题,或者软件开发需求,欢迎加微信 zhongwei 聊聊, 查看更多联系方式