在Ubuntu20.04上安装MySQL8.0及正确配置[已验证]

  • 安装MySQL
  • 验证
  • 登陆MySQL
    • 创建db
    • 解决workbench连接的问题
  • 小结
  • 常用操作
    • 如何新增用户
    • 对新增的用户更改加密方式和密码
    • 卸载MySQL
  • 参考

Ubuntu在20.04版本中,源仓库中MySQL的默认版本已经更新到8.0。因此可以直接安装。

安装MySQL

sudo apt-get update  #更新源
sudo apt-get install mysql-server #安装

验证

安装完成后,可以通过下面的命令来查看时候安装成功:

systemctl status mysql

看到上面的信息就说明MySQL已经安装好并运行起来了。

登陆MySQL

  • 以root用户登陆
sudo mysql -u root -p  # -u 指定用户名 -p需要输入密码

或者:

sudo mysql #可以不需要指定用户名密码

已经成功连接到数据库服务器了。那接下来我们看看这里都有哪些databases.

mysql>show databases;

MySQL安装好后有默认的这几个数据库。其中mysql里有user表,这个表里放了user、host相关的一些信息。通过下面的命令看到这个表。

mysql> show tables from mysql;
+---------------------------+
| Tables_in_mysql           |
+---------------------------+
| columns_priv              |
| component                 |
| db                        |
| default_roles             |
| engine_cost               |
| func                      |
| general_log               |
| global_grants             |
| gtid_executed             |
| help_category             |
| help_keyword              |
| help_relation             |
| help_topic                |
| innodb_index_stats        |
| innodb_table_stats        |
| password_history          |
| plugin                    |
| procs_priv                |
| proxies_priv              |
| role_edges                |
| server_cost               |
| servers                   |
| slave_master_info         |
| slave_relay_log_info      |
| slave_worker_info         |
| slow_log                  |
| tables_priv               |
| time_zone                 |
| time_zone_leap_second     |
| time_zone_name            |
| time_zone_transition      |
| time_zone_transition_type |
| user                      |
+---------------------------+
33 rows in set (0.00 sec)
mysql> select User, Host from mysql.user;
+------------------+-----------+
| User             | Host      |
+------------------+-----------+
| debian-sys-maint | localhost |
| mysql.infoschema | localhost |
| mysql.session    | localhost |
| mysql.sys        | localhost |
| root             | localhost |
+------------------+-----------+
5 rows in set (0.00 sec)

这里root就是我们刚才连接的账户。debian-sys-maint账号是在安装MySQL自动产生的,可以通过下面的命令查看到它。

sudo cat /etc/mysql/debian.cnf

创建db

mysql> create database db_test;
Query OK, 1 row affected (0.01 sec)mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| db_test            |
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
5 rows in set (0.00 sec)

此时数据库里还没有任何表:

mysql> use db_test;
Database changed
mysql> show tables;
Empty set (0.00 sec)

我们需要创建一个表(t_test):

mysql> create table t_test (id int, name varchar(20));
Query OK, 0 rows affected (0.08 sec)

插入数据:

mysql> insert into t_test(id, name) values(1, "A");

解决workbench连接的问题

发现没有权限:

MySQL8.0的版本更改了root账户的授权方式,默认是auth_socket。也就是说需要通过 Unix socket 文件来验证所有连接到localhost的用户,不能使用提供密码的方式了。我们需要通过下面的指令更一下授权方式。

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BT 'root的密码';
Query OK, 0 rows affected (0.01 sec)

然后再使用workbench重新Test Connection,连接正常。


对workbench不能使用root访问数据库的问题,上面的方案是修改root的默认授权方式。

有网友讲还可以使用另外一个方案来解决

  • 先创建另外一个账户(如admin),
mysql> create user 'admin'@'localhost' identified by 'admin'; # 创建admin
  • 给予这个账户(admin)最大的权限,然后workbench就可以使用admin账户访问数据库了。
mysql> GRANT ALL PRIVILEGES ON *.* TO 'admin'@'localhost' IDENTIFIED BY 'admin'

经验证, GRANT特性MySQL8.0之前的版本里有的,MySQL8.0版本已不再支持,不能再使用GRANT来提升权限了。
因此只能使用前面介绍的更改默认授权方式了。

小结

至此,已经可以在ubuntu上正常使用mysql 8.0版本了。mysql 8.0更改了默认的授权方式,移除了grant权限特性。对其它方面的改进需进一步挖掘。

好记性不如烂笔头,写此博文只为备忘。如能帮到有需要的小伙伴,那将是我的荣幸。

另附一些mysql常用操作。

常用操作

sudo service mysql start # 启动mysql service

如何新增用户

CREATE USER 'admin'@'localhost' IDENTIFIED BY '你要设置的密码';

对新增的用户更改加密方式和密码

ALTER USER 'admin'@'localhost' IDENTIFIED WITH mysql_native_password BY 'admin';

卸载MySQL

sudo rm /var/lib/mysql/ -R
sudo rm /etc/mysql/ -R
sudo apt-get autoremove mysql* --purge

参考

  • https://www.mysql.com/why-mysql/white-papers/whats-new-mysql-8-0/

  • https://forum.ubuntu.org.cn/viewtopic.php?t=491034

  • https://www.jianshu.com/p/39a2b636b40a

  • https://blog.csdn.net/king921004/article/details/106184909/

  • https://blog.csdn.net/yunyexiangfeng/article/details/82876964?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase

在Ubuntu20.04上安装MySQL8.0及正确配置[已验证]相关推荐

  1. ubuntu20.04离线安装mysql8.0.30的方法步骤

    难点在于离线,很多版本的对不上,需要手动的下载,之所以会离线,很有可能是很多国企,不让接入互联网,你有就是这么简单,安装就是这么难,但是不得不说,对于自己找问题之类的额问题还是很有帮助的. 需要的安装 ...

  2. Ubuntu20.04上安装部署Elasticsearch

    一.背景 在我们开发ElasticSearch相关功能的时候,想要本机部署一个ElasticSearch服务.想采用apt-get install 的方式来安装.本文在Ubuntu20.04上安装部署 ...

  3. ubuntu20.04上安装和使用frp内网穿透的方法

    ubuntu20.04上安装和使用frp内网穿透的方法 第一步:下载frp软件 frp_0.36.2_linux_amd64.tar.gz 下载地址:https://download.csdn.net ...

  4. Windows上安装mysql-8.0.29-winx64

    Windows上安装mysql-8.0.29-winx64 1.进入官网找到自己所需的安装包:https://dev.mysql.com/ ,路径:DOWNLOAD–>MYSQL Communi ...

  5. 在Ubuntu20.04上安装二进制ros2 foxy

    在Ubuntu20.04上安装二进制ros2 foxy 设置语言环境的支持,确保支持UTF-8 sudo locale-gen en_US en_US.UTF-8 sudo update-locale ...

  6. linux ubuntu 安装git服务器,[linux] Ubuntu20.04上安装搭建私有Git服务器Gitea

    [linux] Ubuntu20.04上安装搭建私有Git服务器Gitea [linux] Ubuntu20.04上安装搭建私有Git服务器Gitea Gitea 是相比于gitlab更加轻量化,而且 ...

  7. docker安装mysql8,Docker安装Mysql8.0,并配置忽略大小写

    1.拉取镜像 //拉取mysql镜像 docker pull mysql//查看镜像 docker images 2.启动mysql $ docker run --name mysq.db -p 33 ...

  8. Docker安装Mysql8.0,并配置忽略大小写,一句命令搞定

    Docker安装Mysql8.0,并配置忽略大小写,一句命令搞定 docker run --name mysql8.db -p 3307:3306 -e MYSQL_ROOT_PASSWORD=Csd ...

  9. GTX1050 Ti(notebook)+Ubuntu16.04上安装Cuda8.0

    本文主要总结了我在笔记本电脑上安装cuda8.0的过程和经验.内容参考了博客 http://blog.csdn.net/victoryaoyu/article/details/70034569, ht ...

最新文章

  1. Unity中制作游戏的快照游戏支持玩家拍快照
  2. Java——设计模式(简单工厂模式)
  3. .sql文件_Mysql分组排序及Sql文件执行
  4. 【树莓派】做一个备份镜像
  5. compilation error错误是什么原因_了解如何使用Try,Throw,Catch和Last处理JavaScript错误...
  6. 17. --cover-- 覆盖掩盖 (词19)
  7. RocketMQ报错:MQClientException:no route info of this topic的解决
  8. [K/3Cloud] 调用其他界面时通过Session传递对象参数
  9. DDK nmake : error 解决方法
  10. 免费暗黑3暗藏的危险
  11. oracle财务数据权限思考
  12. Java8流List转Map
  13. 一种简单的DWG在线浏览方法
  14. Enterprise Library
  15. Python 珍藏函数超详解:随机抽样,分层抽样,系统抽样方法汇总
  16. 《C++ Primer Plus》学习笔记——共用体union
  17. 一分钟解决你的公有云私有云选择困难症
  18. bzoj 1233 干草堆tower 优先队列优化dp
  19. 一阶、二阶和三阶随机占优
  20. 前端学习day 10--小米商城首页的制作

热门文章

  1. 开集(Open Set)、闭集(Closed Set)和紧集(Compact Set)
  2. 海康威视摄像头抓拍功能(web3.0+vue)开发笔记
  3. 【Java】将文本转化成语音
  4. 如何下载广安门外街道卫星地图高清版大图
  5. cv2 图像逆时针旋转180度
  6. ESP8266/ESP32控制ws2812的几种方法
  7. java 批量上传pdf文件_使用fileinput插件批量上传文件
  8. [转]基于Protel DXP软件的PCB高级编辑技巧大全
  9. [高项]职能型组织VS矩阵型组织
  10. wifi码系统具备什么功能