ubuntu20配置mysql8

首先更新软件包索引运行

sudo apt update

命令。然后运行

sudo apt install mysql-server

安装MySQL服务器。

安装完成后,MySQL服务将作为systemd服务自动启动。你可以运行

sudo systemctl status mysql

命令验证MySQL服务器是否正在运行。

连接MySQL

当MySQL安装完成后,你可能会想运行命令

mysql -u root -p

登录到MySQL服务器

如果你登录到Ubuntu的用户不是root用户你将不能访问MySQL服务器。
注意,如果你尝试使用密码登录也将被拒绝连接,MySQL root用户默认是没有密码。

你将会收到类似于这样的消息

(28000): Access denied for user 'root'@'localhost' (using password: YES)

或者

ERROR 1045 (28000): Access denied for user 'root'@'localhost'

这是因为在MySQL 8.0上,对root用户使用auth_socket插件进行身份验证。auth_socket插件仅对从localhost连接到Unix socket文件用户进行身份验证。

这意味着您无法通过提供密码来以root用户连接到MySQL服务器。但你可以通过命令

sudo mysql

连接到MySQL服务器。

sudo mysql
Welcome to the MySQL monitor.  Commands end with ; or \g.
mysql>

总结:可以使用 mysql -u root -p 或者 sudo mysql 在本机登录到mysql,然后执行下一步操作。

修改账号密码

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的密码';
FLUSH PRIVILEGES;

补充:

  • mysql 5.7 localhost和%的区别

基础解释
localhost 只能本地登录

% 任何客户机都能登录(不安全,可以在创建用户时指定ip)
注:user@%和user@localhost是两个不同的用户

相关阅读:

Linux下MySQL出现ERROR 1698 (28000): Access denied for user
‘root‘@‘localhost‘和ERROR 1045 (28000)的一些解决方法

先说原因
因为在Ubuntu下用apt装mysql是没有设置密码的环节的
所以一开始就是没有密码,而且密码也不是为空值,直接敲回车也进不去mysql所以我们这个时候可以直接
mysql -u root
直接进入mysql,那么如何设置密码呢?按照以下命令即可:
mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
Query OK, 0 rows affected (0.00 sec)mysql> ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
Query OK, 0 rows affected (0.00 sec)
然后重启mysql服务器

然后你再尝试进入mysql会发现,
在这里插入图片描述

不用密码已经没办法进入了。

配置远程访问

默认情况下,MySQL服务器仅监听来自本地主机的连接,这意味着它只能由运行在同一主机上的应用程序访问。

但是,在某些情况下,有必要从远程位置访问MySQL服务器。例如,当您想从本地系统连接到远程MySQL服务器时。

或者当使用多服务器部署时,应用程序与数据库服务器不在同一台计算机上运行。

  1. 一种选择是通过SSH隧道访问MySQL服务器,
  2. 另一种是将MySQL服务器配置为接受远程连接。

在本教程中,我们将向你展示如何配置MySQL服务器接受远程的连接。包括添加或更改bind-address选项指定监听地址0.0.0.0 ,授权MySQL用户远程访问权限。

配置防火墙iptable,UFW,FirewallD允许连接3306端口。验证MySQL数据库服务器的远程连接。相同的说明适用于MariaDB。

配置MySQL服务器

第一步是设置MySQL服务器监听计算机所有IP地址。如果MySQL服务器和客户端可以通过专用网络相互通信,那么最好的选择是将MySQL服务器设置为仅在指定IP上监听。

如果要通过公共网络连接到MySQL服务器,请将MySQL服务器设置为监听计算机上的所有IP地址。

因此,您需要编辑MySQL配置文件并添加或更改bind-address选项的值。您可以设置一个IP地址和IP范围。

如果地址为0.0.0.0,则MySQL服务器接受所有远程主机IPv4接口上的连接。如果你需要使用IPv6,请使用::代替0.0.0.0。

MySQL配置文件的位置因Linux发行版而异。在Ubuntu和Debian中,文件位于/etc/mysql/mysql.conf.d/mysqld.cnf,而在基于Red Hat的发行版(如CentOS)中,文件位于/etc/my.cnf。

使用你喜欢的文本编辑器打开文件/etc/mysql/mysql.conf.d/mysqld.cnf,在本教程中我们将使用vim打开文件:

sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf

搜索以bind-address开头的行,并将其值设置为MySQL服务器应监听的IP地址。默认情况下,该值设置为127.0.0.1即仅在本地主机中监听。

在此示例中,我们将值更改为0.0.0.0,将MySQL服务器设置为监听所有IPv4地址。

bind-address           = 0.0.0.0

mysqld.cnf
在MySQL 8.0和更高版本中,bind-address指令可能不存在。在这种情况下,
请将

bind-address           = 0.0.0.0

其添加到**[mysqld]**下。

完成后,重新启动MySQL服务以使更改生效。在现代的Linux发行版中,MySQL通常使用systemd的服务在后台运行,因此你可以使用systemctl命令重启MySQL服务。

实际举例
找到下面的内容:
在这里插入图片描述
然后,修改为:

#bind-address            = 127.0.0.1
#mysqlx-bind-address     = 127.0.0.1
bind-address            = 0.0.0.0
mysqlx-bind-address     = 0.0.0.0

在这里插入图片描述
要使配置生效是需要重启mysql服务的,不过,先不用急,因为你还得设置可以远程访问数据库的账号,注意,下面以root能够远程登录访问mysql数据库为目的进行操作。

设置允许从远程计算机访问的账号

下一步是允许远程用户访问数据库。首先以root用户登录到MySQL服务器。运行命令

sudo mysql

或者您使用本地MySQL身份验证插件以root用户身份登录,请运行

mysql -uroot -p

命令并在出现提示时输入密码。

在MySQL Shell中,使用GRANT语句为用户授予远程访问权限。

sudo mysql
mysql -uroot -p
MYSQL5版本具体执行
GRANT ALL ON database_name.* TO user_name@'ip_address' IDENTIFIED BY 'user_password';

GRANT命令解释

  • 其中database_name是用户将连接到的数据库的名称。
  • user_name是MySQL用户的名称。
  • ip_address是用户本地计算机的IP地址。使用***%***允许用户从任何IP地址进行连接。
  • user_password是用户密码。

例如,仅允许IP是10.8.0.5的客户端使用密码my_passwd和用户名为foo访问数据库dbname,请运行以下命令,如需允许所有IP,请使用%代替IP地址。命令如下:

GRANT ALL ON dbname.* TO foo@'10.8.0.5' IDENTIFIED BY 'my_passwd';
MYSQL8版本具体执行

ps:
上面的是mysql5的,在mysql8下面会报错,解释如下:

MySQL8.x使用GRANT为用户赋权时报错

在 MySQL 5.x 的版本中的操作方式

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;

在 MySQL 8.x 中版本中按照以上操作

mysql> GRANT ALL PRIVILEGES ON . TO ‘root’@‘%’ IDENTIFIED BY
‘123456’ WITH GRANT OPTION; 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
‘123456’ WITH GRANT OPTION’ at line 1

原因分析

通过官网文档的指引可以知道,新版本的 MySQL 8.x 版本已经将创建账户和赋权的方式分开导致以上的命令在 MySQL 8.x 上执行报语法错误。

解决方案

# 创建账户
CREATE USER '用户名'@'访问主机' IDENTIFIED BY '密码';
# 或者修改账号
ALTER USER '用户名'@'访问主机' IDENTIFIED BY '密码';
# 为创建的账户赋权
GRANT '权限列表' ON '数据库' TO '用户名'@'访问主机';
# 你想一劳永逸不考虑任何安全性的话,什么都给root就好了:
GRANT ALL ON *.* TO 'root'@'%';
# 刷新
FLUSH PRIVILEGES;
验证更改

要验证远程用户是否可以连接到MySQL服务器,可以运行命令

ps:验证之前请确保已经重启mysql服务器了,配置已经生效了!

root@toowhite-MS-7D48:~# systemctl stop mysql
root@toowhite-MS-7D48:~# systemctl start mysql

使用以上步骤创建的账号来进行登录测试:

mysql -u user_name -h mysql_server_ip -p
譬如:
mysql -u root -h 127.0.0.1 -p

其中user_name是您授予远程访问权限的用户名,mysql_server_ip是运行MySQL服务器的主机的IP地址。如果一切设置正确,您将能够登录到远程MySQL服务器。

如果收到类似以下的错误,则说明端口3306未打开,或者MySQL服务器未监听IP地址。ERROR 2003 (HY000): Can’t connect to MySQL server on ‘10.8.0.5’ (111)"

“ERROR 1130 (HY000): Host ‘10.8.0.5’ is not allowed to connect to this MySQL server”。错误表示您尝试登录的用户无权访问远程MySQL服务器。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/660258.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【免费分享】数据可视化-银行动态实时大屏监管系统,含源码

一、动态效果展示 1. 动态实时更新数据效果图 ​ 2. 鼠标右键切换主题 二、确定需求方案 1. 屏幕分辨率 这个案例的分辨率是16:9,最常用的的宽屏比。 根据电脑分辨率屏幕自适应显示,F11全屏查看; 2. 部署方式 B/S方式:支持…

SpringBoot+Redis如何实现用户输入错误密码后限制登录(含源码)

点击下载《SpringBootRedis如何实现用户输入错误密码后限制登录(含源码)》 1. 引言 在当今的网络环境中,保障用户账户的安全性是非常重要的。为了防止暴力破解和恶意攻击,我们需要在用户尝试登录失败一定次数后限制其登录。这不…

全程云OA未授权访问+SQL注入漏洞复现 [附POC]

文章目录 全程云OA未授权访问+SQL注入漏洞复现 [附POC]0x01 前言0x02 漏洞描述0x03 影响版本0x04 漏洞环境0x05 漏洞复现1.访问漏洞环境2.构造POC3.复现全程云OA未授权访问+SQL注入漏洞复现 [附POC] 0x01 前言 免责声明:请勿利用文章内的相关技术从事非法测试,由于传播、利…

【开发实践】python使用 moviepy实现mp4转gif(含可视化界面)

一、分析介绍 MoviePy是一个用于视频编辑和处理的Python库。它提供了一种简单而直观的方式来创建、编辑和合成视频,同时也支持添加音频和图像。 以下是MoviePy的一些主要功能和用法示例: 创建视频剪辑: from moviepy.editor import VideoFi…

visual studio 0x800700d8怎么解决

遇到Visual Studio中的0x800700d8错误通常表示在尝试执行某个操作时遇到了问题,这可能是由于系统组件缺失、文件损坏、权限问题或其他系统级错误导致的。下面是一些详细的解决步骤,你可以尝试按照这些步骤来解决问题: 运行Windows更新&#…

如何做好多平台内容营销?媒介盒子分享

随着社交媒体不断多元化,内容营销逐渐发展出了新趋势,那就是跨平台内容营销。互联网平台相对封闭,平台的运营偏好也会吸引不同社区的粉丝聚集,造就其不同的品牌人格,然后用户个体需求极其复杂,兴趣也在不断…

Arcgis10.3安装

所需软件地址 链接:https://pan.baidu.com/s/1aAykUDjkaXjdwFjDvAR83Q?pwdbs2i 提取码:bs2i 1、安装License Manager 点击License Manager.exe,默认下一步。 安装完,点击License Server Administrator,停止服务。…

大数据学习之Redis,十大数据类型的具体应用(四)

3.8 Redis基数统计(HyperLogLog) 需求 统计某个网站的UV、统计某个文章的UV 什么是UV unique Visitor ,独立访客,一般理解为客户端IP 大规模的防止作弊,需要去重复统计独立访客 比如IP同样就认为是同一个客户 需要去…

滑动窗口入门(算法村第十六关青铜挑战)

窗口:窗口其实就是两个变量left和ight之间的元素,也可以理解为一个区间。窗口大小可能固定,也可能变化。滑动:窗口是移动的,事实上移动的仍然是left和ight两个变量,而不是序列中的元素。当变量移动的时&…

OpenGL着色器对象 Shader Objects

着色器对象 要创建着色器对象,你可以使用以下命令: uint glCreateShader( enum type );当创建着色器对象时,它最初是空的。type 参数指定要创建的着色器对象的类型,必须是指示相应着色器阶段的值之一。以下是该命令的简要概述&a…

算法笔记刷题日记——Day1 C_C++在ACM中的常用语法

写在前面 这学期选了ACM课,但平时缺乏练习,不怎么刷题,因此期末考试成绩并不理想。考虑到之后的考研复试中包含机试,且计试可以算是非常重要的印象分,因此我打算寒假刷一下算法笔记,备战3月初的PAT甲级和3…

【前端学习路线】

前端学习路线 1. 大纲: 前端学习路线2. ES6 语法1. let 和 const2. 箭头函数3. 解构3.1 数组解构3.2 对象解构 4 剩余参数4.1 和解构联用4.2 合并数组 5. 可选链6. Set7.数组操作8.字符串扩展方法8.1 startsWith() 和 endsWith()8.2 模板字符串 1. 大纲: 前端学习路线 学习前端…

【Android 字节码插桩】Gradle插件基础 Transform API的使用

前言 啪~我给大家开个会(手机扔桌子上) 什么叫做 客户无感的数据脱敏!? 师爷给翻译翻译什么叫做客户无感的数据脱敏? 什么特么的叫做客户无感数据脱敏? 举个栗子~ 客户端Sdk新升级了一个版本,增…

Jmeter,如何从数组参数中取值

有个post请求,参数“equipment_ids”,是个数组,需求每次执行的时候,按顺序取equipment_ids中不同的值 要实现在 JMeter 中每次执行请求时按顺序取不同的 equipment_ids 中的值,你可以使用 Counter 元件来生成索引&…

Qt读写Execl:QXlsx库

Qt三方库开发技术:QXlsx介绍、编译和使用 我自己记录的实例代码:https://download.csdn.net/download/cao_jie_xin/88795216 目录 一、概述二、下载三、编译四、加载QXlsx静态库五、介绍一些常用的功能1、一些头文件和命名空间2、创建一个excel文件3、…

vue-cli脚手架的安装

vue-cli 1 什么是vue-cli Vue 提供了一个官方的 CLI,为单页面应用 (SPA) 快速搭建繁杂项目的脚手架。它为现代前端工作流提供了 batteries-included 的构建设置。只需要几分钟的时间就可以运行起来并带有热重载、保存时 lint 校验,以及生产环境可用的构…

2024年1月个人工作生活总结

本文为 2024年1月工作生活总结。 研发编码 docker-compose外部网络配置 高版本的docker-compose有些语法变化。 使用如下方式声明外部网络: version: 3.8services:ll-busybox: ...networks:my-net:ipv4_address: 172.100.1.1 networks:my-net:external:name: &q…

在linux(centos)上运行C语言文件

📙 作者简介 :RO-BERRY 📗 学习方向:致力于C、C、数据结构、TCP/IP、数据库等等一系列知识 📒 日后方向 : 偏向于CPP开发以及大数据方向,欢迎各位关注,谢谢各位的支持 目录 1.下载gcc2.创建C语言…

软件价值2-贪吃蛇游戏

贪吃蛇游戏虽然很多,不过它可以作为软件创作的开端,用python来实现,然后dist成windows系统可执行文件。 import pygame import sys import random# 初始化 pygame.init()# 游戏设置 width, height 640, 480 cell_size 20 snake_speed 15# …

SpringBoot 整合多数据源的事务问题

代码 先贴代码:核心就是:Spring给我们提供的一个类 AbstractRoutingDataSource,然后我们再写一个切面来切换数据源,肯定要有一个地方存储key还要保证上下文都可用,所以我们使用 ThreadLocal 来存储数据源的key pom.xml…