ubuntu20 安装和配置mysql8.0.23

ponponon

引言

网上安装配置mysql教程纷繁杂乱。我常折腾wsl、虚拟机、树莓派,多是使用apt包管理器、基于ubuntu的linux发行版。
记录常用到的安装和配置mysql教程,作为笔记和踩坑日志,便复用。


正文

本教程是在ubuntu20上使用apt安装mysql8.0并处理相关配置,以及开启远程连接可被其他电脑访问。

前提

实验平台:ubuntu20.04.2
目标mysql版本:8.0.23

neofetch

image

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

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
image
此图中的做法这里并不需要

不需要做的事情:

  • 启动
  • 设置开机启动
    这两件事情已经通过apt自动完成了

参考链接:centOS7 install mysql8.0.23

MySQL服务管理

sudo service mysql status # 查看服务状态
sudo service mysql start # 启动服务
sudo service mysql stop # 停止服务
sudo service mysql restart # 重启服务

查看mysql状态

输入service mysql status就可以看到mysql正在运行中了,差不多要占350MB的内存

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这条查看

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用户

新建一个root用户,密码为root

create user 'root'@'%' identified by 'yourpassword';

授权

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;

重置密码

重置root账户密码为password
use mysql;
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '新密码';
FLUSH PRIVILEGES;

mysql> use mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的密码';
Query OK, 0 rows affected (0.00 sec)

mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

远程连接

如果你遇到了这个问题,并不需要修改防火墙等等,只需按我如下的操作即可。
image

方案一:修改配置文件

先关停mysql服务
sudo systemctl stop mysql
编辑mysql配置文件
sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
image.png
注销掉

#bind-address           = 127.0.0.1

在开启mysql服务即可sudo service mysql start

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.

方案二:创建一个同名但不同主机的用户

mysql 中用户由 HostUserauthentication_string 三部分组成,而不仅仅是一个用户名。
所以,你懂的,除了设置一个本地用户,还需要设置一个可远程访问的用户,用户名,即 Uesr 字段相同,只有 Host 不同,至于密码,随意。

我要创建一个名为 vagrant 用户,可以本地访问,也可以远程访问.
下面的代码创建一个只能被本地访问的 vagrant 账户

CREATE USER 'vagrant'@'localhost' IDENTIFIED BY 'yourpassword';
GRANT ALL PRIVILEGES ON *.* TO 'vagrant'@'localhost' WITH GRANT OPTION;
flush privileges;

下面的代码创建一个只能被远程访问的 vagrant 账户

CREATE USER 'vagrant'@'%' IDENTIFIED BY 'yourpassword';
GRANT ALL PRIVILEGES ON *.* TO 'vagrant'@'%' WITH GRANT OPTION;
flush privileges;

此时,既可以本地(直接物理机的终端上,或者ssh连接至物理机),又可以远程(通过dataGripnavicat这些软件)

通过如下的方式查看我们的用户消息情况

mysql> use mysql
mysql> select host,user,authentication_string from user\G
*************************** 1. row ***************************
                 host: %
                 user: vagrant
42l5hyxUukQ6obMJ.N/ayYv2kZQ9jXhEi6Yrx.XKXB
*************************** 2. row ***************************
                 host: localhost
                 user: mysql.infoschema
authentication_string: $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED
*************************** 3. row ***************************
                 host: localhost
                 user: mysql.session
authentication_string: $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED
*************************** 4. row ***************************
                 host: localhost
                 user: mysql.sys
authentication_string: $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED
*************************** 5. row ***************************
                 host: localhost
                 user: root
authentication_string: *96E7A848AB10957950D4E01EE8D60E361205A073
*************************** 6. row ***************************
                 host: localhost
                 user: vagrant
authentication_string: *96E7A848AB10957950D4E01EE8D60E361205A073
6 rows in set (0.00 sec)

图片.png

阅读 944

喜欢科技

33 声望
11 粉丝
0 条评论
你知道吗?

喜欢科技

33 声望
11 粉丝
宣传栏