ubuntu20安装配置mysql8.0.23步骤详解
引言
网上安装配置mysql
教程纷繁杂乱。我常折腾wsl、虚拟机、树莓派,多是使用apt
包管理器、基于ubuntu
的linux发行版。
记录常用到的安装和配置mysql
教程,作为笔记和踩坑日志,便复用。
本教程是在ubuntu20
上使用apt
安装mysql8.0
并处理相关配置,以及开启远程连接可被其他电脑访问。
包含一下内容:
-
mysql8.0
的安装(使用apt
包管理器安装) -
mysql
配置(初始化密码、开启远程访问权限)
centos
等可能和ubuntu
存在差异,请参考其他教程
前提
实验平台:ubuntu20.04.2
目标mysql
版本:8.0.23
?
1 2 | bot@ubuntu:~ /Desktop/python/django/2 $ mysql --version mysql Ver 8.0.23-0ubuntu0.20.04.1 for Linux on x86_64 ((Ubuntu)) |
安装
在ubuntu
中安装mysql
只要一行命令就可以了 sudo apt install mysql-server
1 2 3 4 5 6 7 8 9 10 | bot@ubuntu:~ /Desktop/python/django/2 $ sudo apt install mysql-server [ sudo ] bot 的密码: 正在读取软件包列表... 完成 正在分析软件包的依赖关系树 正在读取状态信息... 完成 mysql-server 已经是最新版 (8.0.23-0ubuntu0.20.04.1)。 下列软件包是自动安装的并且现在不需要了: linux-headers-5.4.0-42 linux-headers-5.4.0-42-generic linux-image-5.4.0-42-generic linux-modules-5.4.0-42-generic linux-modules-extra-5.4.0-42-generic 使用 'sudo apt autoremove' 来卸载它(它们)。 升级了 0 个软件包,新安装了 0 个软件包,要卸载 0 个软件包,有 0 个软件包未被升级。 |
配置
注意事项
通过apt
安装的mysql
不需要像其他平台那样开启服务,因为已经默认开启,并且服务名叫做mysql
,而不是mysqld
上图中的做法这里并不需要
不需要做的事情:
- 启动
- 设置开机启动
因为,这两件事情已经通过apt自动完成了
MySQL服务管理
?1 2 3 4 | sudo service mysql status # 查看服务状态 sudo service mysql start # 启动服务 sudo service mysql stop # 停止服务 sudo service mysql restart # 重启服务 |
查看mysql状态
输入service mysql status
就可以看到mysql正在运行中了,差不多要占350MB的内存
1 2 3 4 5 6 7 8 9 10 11 12 13 | bot@ubuntu:~ /Desktop/python/django/2 $ service mysql status ● mysql.service - MySQL Community Server Loaded: loaded ( /lib/systemd/system/mysql .service; enabled; vendor preset: enabled) Active: active (running) since Wed 2021-02-10 16:15:50 CST; 17min ago Process: 1008 ExecStartPre= /usr/share/mysql/mysql-systemd-start pre (code=exited, status=0 /SUCCESS ) Main PID: 1168 (mysqld) Status: "Server is operational" Tasks: 37 (limit: 4620) Memory: 395.2M CGroup: /system .slice /mysql .service └─1168 /usr/sbin/mysqld 2月 10 16:15:45 ubuntu systemd[1]: Starting MySQL Community Server... 2月 10 16:15:50 ubuntu systemd[1]: Started MySQL Community Server. |
登录
方法一:默认账户登录
查看密码使用sudo cat /etc/mysql/debian.cnf
这条查看
1 2 3 4 5 6 7 8 9 10 11 12 13 | bot@ubuntu:~ /Desktop/python/django/2 $ sudo cat /etc/mysql/debian .cnf [ sudo ] bot 的密码: # Automatically generated for Debian scripts. DO NOT TOUCH! [client] host = localhost user = debian-sys-maint password = SffnwAJrKhIFZ2tO socket = /var/run/mysqld/mysqld .sock [mysql_upgrade] host = localhost user = debian-sys-maint password = SffnwAJrKhIFZ2tO socket = /var/run/mysqld/mysqld .sock |
方法二:直接进入mysql命令:sudo mysql
本地 root 用户
到了关键的一步,其实现在你的数据库中就有一个叫做 host
字段为 localhost
的 root
的用户我们需要做如下几件事情:
- 修改初始 root 用户的密码(修为我们自己的密码)
不需要授予访问权限等操作,因为默认已经有了
重置密码
重置 root 账户密码
?1 | ALTER USER 'root' @ 'localhost' IDENTIFIED WITH mysql_native_password BY '新密码' ; |
1 | FLUSH PRIVILEGES; |
远程root 用户
如果需要远程登陆:
- 创建一个
host
字段为%
的 root 用户(创建用户的同时设置密码) - 授权所有数据库的访问权限
- 刷新权限列表
有些 uu 就会很奇怪为什么要创建两个 root
用户呢?这个和 mysql
的用户管理方式有关系:localhost
表示本机登录;%
表示远程登陆。
如果 root
用户只有 %
,那就只能除了本机外的其他计算机才能登陆 mysql server,如果用户只有 localhost
,那只有本机可以登录,远程计算机不能登录 mysql server
那么 mysql 为什么要这么设计呢?可能是为了安全吧!这样我们可以为 root 设置两个不同的密码,localhost
环境下设置一个很简单的密码;%
环境下就可以极其复杂
诸如:MnRmsrdm9wjkT5XC9Y2F5b4IouAPZBfx
(注意 mysql 的密码有长度限制,好像是 32 个字符长度)
新建一个 host 为 % 的 root用户,密码随意
?1 | create user 'root' @ '%' identified by 'yourpassword' ; |
授权
?1 | GRANT ALL PRIVILEGES ON *.* TO 'root' @ '%' WITH GRANT OPTION ; |
刷新权限
?1 | FLUSH PRIVILEGES ; |
通过如下的方式查看我们的用户信息情况
?1 2 3 4 5 6 7 8 9 10 11 12 13 | mysql> use mysql mysql> select host, user ,authentication_string from user ; + -----------+------------------+------------------------------------------------------------------------+ | host | user | authentication_string | + -----------+------------------+------------------------------------------------------------------------+ | % | root | *96E7A848AB10957950D4E01EE8D60E361205A073 | | localhost | debian-sys-maint | $A$005$)h&}?mq<1rx*2^ut5na8v15kXP0XBBiK63RFLJBF2vHY0DYnmVHNA/PoHA | | localhost | mysql.infoschema | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | | localhost | mysql.session | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | | localhost | mysql.sys | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | | localhost | root | *96E7A848AB10957950D4E01EE8D60E361205A073 | + -----------+------------------+------------------------------------------------------------------------+ 6 rows in set (0.00 sec) |
远程连接
光设置需要登陆用户的 host 为 % 是不够的,因为 mysql 的配置文件中静止了远程登录,需要去修改一下配置文件。
如果你遇到了这个问题,并不需要修改防火墙等等,只需按我如下的操作即可。
先关停mysql服务
?1 | sudo systemctl stop mysql |
编辑mysql配置文件
?1 | sudo vim /etc/mysql/mysql .conf.d /mysqld .cnf |
注销掉
?1 | #bind-address = 127.0.0.1 |
在开启mysql服务即可sudo service mysql start
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | bot@ubuntu:~$ sudo service mysql start bot@ubuntu:~$ sudo service mysql status ● mysql.service - MySQL Community Server Loaded: loaded ( /lib/systemd/system/mysql .service; enabled; vendor preset: enabled) Active: active (running) since Wed 2021-02-10 21:05:54 CST; 10s ago Process: 4013 ExecStartPre= /usr/share/mysql/mysql-systemd-start pre (code=exited, status=0 /SU > Main PID: 4021 (mysqld) Status: "Server is operational" Tasks: 38 (limit: 4619) Memory: 334.7M CGroup: /system .slice /mysql .service └─4021 /usr/sbin/mysqld 2月 10 21:05:54 ubuntu systemd[1]: Starting MySQL Community Server... 2月 10 21:05:54 ubuntu systemd[1]: Started MySQL Community Server. |
此时,既可以本地(直接物理机的终端
上,或者ssh
连接至物理机),又可以远程(通过dataGrip
、navicat
这些软件)
以上就是ubuntu20安装配置mysql8.0.23步骤详解的详细内容,更多关于ubuntu安装配置mysql的资料请关注服务器之家其它相关文章!
原文链接:https://segmentfault.com/a/1190000039203507
1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。