ubuntu 18 虚拟机安装(3)安装mysql

news2024/11/18 11:25:29

ubuntu 18 虚拟机安装(3)安装mysql

参考
https://cloud.tencent.com/developer/article/1700780
技术分享 | MySQL 设置管理员密码无法生效一例
https://cloud.tencent.com/developer/article/2014384

在Ubuntu18.04上安装MySQL | 超级详细
https://baijiahao.baidu.com/s?id=1626805903141392082&wfr=spider&for=pc

MySQL查看用户权限及权限管理的方法详解
https://www.jb51.net/database/318148q0l.htm

mysql——数据库备份——使用mysqldump命令备份所有数据库
https://blog.csdn.net/m0_61442607/article/details/127968055

MySQL “grant all”与”grant all privileges”的差别
https://deepinout.com/mysql/mysql-questions/5_mysql_mysql_grant_all_vs_grant_all_privileges.html

1

sudo apt update
sudo apt install mysql-server -y

2

安装完成之后可以使用如下命令来检查是否安装成功:

sudo netstat -tap | grep mysql

通过上述命令检查之后,如果看到有 mysql 的socket处于 LISTEN 状态则表示安装成功。

3

对于全新安装,你应该运行包含的安全脚本。该脚本改变一些诸如远程root登录和简单用户等不安全的缺省选项。在老版本的MySQL中,你还需要手动初始化数据目录,但现在将被自动完成。
运行安全脚本:
sudo mysql_secure_installation
该脚本将通过一系列的提示帮你完成MySQL安装安全选项的变更。第一个提示将询问你是否愿意安装密码检测插件,该插件用来测试你设置的MySQL密码的强壮性。无论你如何选择,下一个提示是让你设置MySQL root用户的密码。回车,然后需要确认你输入的密码。
从这开始,后续所有问题可以输入Y或者回车,采用默认配置即可。这将移除一些匿名用户和测试数据库,并且禁用远程root登录。同时,将加载这些新规则以使您做的变更能够在MySQL立刻生效。
sudo mysql_secure_installation

Securing the MySQL server deployment.

Connecting to MySQL using a blank password.

VALIDATE PASSWORD PLUGIN can be used to test passwords
and improve security. It checks the strength of password
and allows the users to set only those passwords which are
secure enough. Would you like to setup VALIDATE PASSWORD plugin?

Press y|Y for Yes, any other key for No: N
Please set the password for root here.

New password: 

Re-enter new password: 
By default, a MySQL installation has an anonymous user,
allowing anyone to log into MySQL without having to have
a user account created for them. This is intended only for
testing, and to make the installation go a bit smoother.
You should remove them before moving into a production
environment.

Remove anonymous users? (Press y|Y for Yes, any other key for No) : y
Success.


Normally, root should only be allowed to connect from
'localhost'. This ensures that someone cannot guess at
the root password from the network.

Disallow root login remotely? (Press y|Y for Yes, any other key for No) : y
Success.

By default, MySQL comes with a database named 'test' that
anyone can access. This is also intended only for testing,
and should be removed before moving into a production
environment.


Remove test database and access to it? (Press y|Y for Yes, any other key for No) : y
 - Dropping test database...
Success.

 - Removing privileges on test database...
Success.

Reloading the privilege tables will ensure that all changes
made so far will take effect immediately.

Reload privilege tables now? (Press y|Y for Yes, any other key for No) : y
Success.

All done! 

11
sudo mysql_secure_installation

接下来,为了确保数据库的安全性和正常运转,对数据库进行初始化操作。这个初始化操作涉及下面5个步骤。

(1)安装验证密码插件。

(2)设置root管理员在数据库中的专有密码。

(3)随后删除匿名账户,并使用root管理员从远程登录数据库,以确保数据库上运行的业务的安全性。

(4)删除默认的测试数据库,取消测试数据库的一系列访问权限。

(5)刷新授权列表,让初始化的设定立即生效。

对于上述数据库初始化的操作步骤,在下面的输出信息旁边我做了简单注释。

root@ubuntu-virtual-machine:~# mysql_secure_installation

Securing the MySQL server deployment.

Connecting to MySQL using a blank password.

VALIDATE PASSWORD PLUGIN can be used to test passwords
and improve security. It checks the strength of password
and allows the users to set only those passwords which are
secure enough. Would you like to setup VALIDATE PASSWORD plugin? #要安装验证密码插件吗?

Press y|Y for Yes, any other key for No: N # 这里我选择N
Please set the password for root here.

New password: #输入要为root管理员设置的数据库密码

Re-enter new password: #再次输入密码

By default, a MySQL installation has an anonymous user,
allowing anyone to log into MySQL without having to have
a user account created for them. This is intended only for
testing, and to make the installation go a bit smoother.
You should remove them before moving into a production
environment.

Remove anonymous users? (Press y|Y for Yes, any other key for No) : y #删除匿名账户
Success.

Normally, root should only be allowed to connect from
‘localhost’. This ensures that someone cannot guess at
the root password from the network.

Disallow root login remotely? (Press y|Y for Yes, any other key for No) : N #禁止root管理员从远程登录,这里我没有禁止

… skipping.
By default, MySQL comes with a database named ‘test’ that
anyone can access. This is also intended only for testing,
and should be removed before moving into a production
environment.

Remove test database and access to it? (Press y|Y for Yes, any other key for No) : y #删除test数据库并取消对它的访问权限

  • Dropping test database…
    Success.

  • Removing privileges on test database…
    Success.

Reloading the privilege tables will ensure that all changes
made so far will take effect immediately.

Reload privilege tables now? (Press y|Y for Yes, any other key for No) : y #刷新授权表,让初始化后的设定立即生效
Success.

All done!

4

初始化MySQL数据目录,在5.7.6之前的版本需要使用mysql_install_db, 5.7.6及之后的版本使用mysqld --initialize进行初始化。如果您通过步骤1描述的Debian包安装的MySQL,数据目录将被自动初始化,您不需要做任何事情。

5

登录mysql数据库可以通过如下命令:

mysql -u root -p

mysql -u root -p
Enter password: 
ERROR 1698 (28000): Access denied for user 'root'@'localhost'

前面加上 sudo mysql -u root -p
在这里插入图片描述
-u 表示选择登陆的用户名,
-p 表示登陆的用户密码,
现在是mysql数据库是没有密码的,
Enter password:处直接回车,
就能够进入mysql数据库。

然后通过 show databases; 就可以查看当前的所有数据库。

之前通过 sudo mysql_secure_installation 设置 的密码,没有起作用,为啥呢?

执行下面这句话 查看状态

select plugin,authentication_string from mysql.user where user = 'root' ;

在这里插入图片描述

6

用户的认证插件有可能使用 auth_socket 。
极有可能是这个原因!

插件 auth_socket MySQL 官网全称为:Socket Peer-Credential Pluggable Authentication(套接字对等凭据可插拔的身份验证)。

官方文档地址:https://dev.mysql.com/doc/refman/8.0/en/socket-pluggable-authentication.html

阅读官方文档后可以得出的结论为插件 auth_socket 不需要验证密码即可进行本地认证!它有两个认证条件:

客户端通过本地 unix socket 文件连接 MySQL 服务端。
通过 socket 的选项 SO_PEERCRED 来获取运行客户端的 OS 用户名,随后判断 OS 用户名是否在 mysql.user 表里。
另外,想了解更多关于 socket 的选项 SO_PEERCRED 可以参考这个网址:https://man7.org/linux/man-pages/man7/unix.7.html

那我们接下来验证结论是否正确。查看当前登录用户是不是root@localhost: 确认无疑。

检查 mysql.user 表记录:检查字段 plugin、authentication_string(此字段有可能不为空)。
确认管理员账号插件为 auth_socket ,难怪改密码无效。接下来把插件改为非 auth_socket 即可。

alter user root@localhost identified with mysql_native_password by '1234abcd';
flush privileges; # 刷新权限

在Ubuntu系统中MySQL 5.7及之后的版本,MySQL的root用户被默认设置成通过auth_socket插件进行认证,而不是通过密码。在很多情况下,这些配置可以使系统更加的安全和可靠,但如果允许外部程序(例如phpMyAdmin)访问时,这将是事情变得非常复杂。
为了能够以root用户通过密码的方式连接MySQL,你需要将其认证方式从 auth_socket 方式变更为mysql_native_password。进行该设置,通过终端打开MySQL的提示符:
SELECT user,authentication_string,plugin,host FROM mysql.user;
本例中,您可以看到实际上root用户通过auth_socket插件的方式进行认证。要将root用户设置为通过密码认证,运行如下ALTER USER命令。务必将密码设置为高强度的密码,需要注意的是该操作将改变您在步骤2中设置的密码:
ALTER USER ‘root’@‘localhost’ IDENTIFIED WITH mysql_native_password BY ‘password’;
然后运行 FLUSH PRIVILEGES, 这将让数据库系统重新加载授权表是变更生效:
FLUSH PRIVILEGES;
检查每个用户的授权方法,确认root用户不再使用auth_socket插件进行认证。
SELECT user,authentication_string,plugin,host FROM mysql.user;

检查mysql服务状态:

systemctl status mysql

显示如下结果说明mysql服务运行是正常的:

然后执行exit命令退出mysql服务,再执行如下命令重启mysql:

systemctl restart mysql

(可选)启动MySQL服务并设置开机自启:

sudo systemctl start mysql
sudo systemctl enable mysql

(可选)查看MySQL服务的状态:


sudo systemctl status mysql

以上步骤会安装MySQL服务器,执行安全设置,并启动MySQL服务。如果需要进一步配置,可以登录MySQL后执行相关SQL命令。

7. 添加用户

如果一直都是sudo才能进入mysql,那就很没有意思了

所以可以在mysql里创建一个新的用户,命令为:

其中ubuntu为新用户名称,123456为新用户的密码

mysql> create user 'ubuntu'@'%' identified by '123456';
Query OK, 0 rows affected (0.02 sec)

mysql> grant all privileges on *.* to ubuntu@'%' identified by '123456';
Query OK, 0 rows affected, 1 warning (0.00 sec)

再次用mysql -u root -p命令,Enter password:处输入刚设置的密码,回车,就能够进入mysql数据库。

使用 use mysql; 命令打开mysql命名的数据库,显示当前数据库的表:show tables; 查询user表里的数据:select * from user;(user表里是mysql数据库的所有账户信息)

保存退出,然后进入mysql数据库,执行授权命令:

mysql> grant all on *.* to root@'%' identified by '你的密码' with grant option; 
mysql> flush privileges; # 刷新权限

11
注意: 如果您启用的root用户的密码认证,您需要通过不同的命令登录MySQL终端。如上所述,将以常规用户权限运行MySQL客户端。只能通过认证以获得管理员权限。
mysql -u root -p
如下,创建一个新用户,并设置强密码:
CREATE USER ‘sammy’@‘localhost’ IDENTIFIED BY ‘password’;
然后,授予新用户合适的权限。例如,授予新用户访问数据库中所有表的权限,及添加、变更和移除用户的权限,通过如下命令即可:
GRANT ALL PRIVILEGES ON . TO ‘sammy’@‘localhost’ WITH GRANT OPTION;
需要注意的是,这时您不再需要运行FLUSH PRIVILEGES命令。只有通过 INSERT, UPDATE或者DELETE命令的方式变更授权表的时候才需要该命令。由于您创建了一个新用户,而不是改变一个已经存在的用户,因此FLUSH PRIVILEGES并不是必须要运行的。
退出MySQL终端:
exit
最后,我们测试一下安装的结果。
测试MySQL(步骤4)
无论您如何安装的,MySQL都应该自动运行,通过如下命令可以查看其状态:
systemctl status mysql.service
您可以看到类似如下输出:
● mysql.service - MySQL Community ServerLoaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enActive: active (running) since Wed 2018-04-23 21:21:25 UTC; 30min agoMain PID: 3754 (mysqld)Tasks: 28Memory: 142.3MCPU: 1.994sCGroup: /system.slice/mysql.service└─3754 /usr/sbin/mysqld
如果MySQL没有运行,你可以通过sudo systemctl start mysql启动服务。
最为进一步的检查,可以通过mysqladmin 工具连接数据库,这是一个让你运行管理层面命令的客户端。例如,该命令提示以root(-u root)用户连接MySQL,并提示输入密码(-p),然后返回版本信息。
sudo mysqladmin -p -u root version
可以看到如下输出信息:
mysqladmin Ver 8.42 Distrib 5.7.21, for Linux on x86_64Copyright © 2000, 2018, Oracle and/or its affiliates. All rights reserved.Oracle is a registered trademark of Oracle Corporation and/or itsaffiliates. Other names may be trademarks of their respectiveowners.Server version 5.7.21-1ubuntu1Protocol version 10Connection Localhost via UNIX socketUNIX socket /var/run/mysqld/mysqld.sockUptime: 30 min 54 secThreads: 1 Questions: 12 Slow queries: 0 Opens: 115 Flush tables: 1 Open tables: 34 Queries per second avg: 0.006
这意味着MySQL已经起来,并处以运行状态。

8. 查看用户权限

select * from mysql.user where user='root'\G
SHOW GRANTS FOR 'root'@'%';
SHOW GRANTS FOR 'root'@'localhost';

22
SHOW GRANTS FOR ‘root’@‘localhost’;

SHOW GRANTS FOR ‘root’@‘%’;

mysqldump

备份命令的 -B 参数

执行备份语句的时候,其中可以加上很多的参数,用来添加一些备份的时候的特殊要求的,其中有一个-B参数。执行备份语句时,如果加上了-B参数,那么将来再执行数据还原的时候,就不需要自己到数据库里面去先创建一个目标库了,并且执行数据还原语句的时候也不需要指定目标库了。如果没有加-B参数,就需要自行到数据库中先创建一个目标库,并且执行恢复语句时要指定将数据恢复到目标库。

原因是-B参数导出的文件中自带创建数据库和连接数据库的功能:(使用-B参数备份出来的内容自带create database 库名和use 库名的功能)。
备份命令的 | gzip 管道符

【压缩备份】:实际生产上导出的数据有可能比较大,不好备份到远程,这时候就需要进行压缩。

然后执行如下mysql命令(需要首先确认db_backup.dump文件存在于当前路径下):

mysql > source db_backup.dump;

这一方法的优点在于能够显示读取备份的过程和时间。

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

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

相关文章

字节豆包 MarsCode:AI 开发工具

MarsCode 是豆包旗下的智能编程助手,类似 GitHub Copilot 提供以智能代码补全为代表的核心能力,简单试用了下,免费,使用时需要手机号登录,代码补全还算 ok,聊天功能就有点差了。 还包括一个 AI 原生 IDE&am…

EPLAN批量修改文字大小

在项目设计过程中,往往要批量调整文字的大小,如何批量修改文字大小: 点击需要调整的相同类的文字 右键 “属性”,然后在分配里找到“属性放置,设备标识符”这一栏 看下文字的属性在第几层 在项目数据找到层管理&…

道路救援入驻派单小程序开源版开发

道路救援入驻派单小程序开源版开发 1、用户立即救援 2、后台收到救援通知,派单救援师傅. 道路救援入驻派单小程序通常会包含一系列功能,旨在方便救援服务提供商、用户和后台管理系统之间的交互。以下是一个可能的功能列表: 用户端功能&…

前端框架中的前端打包(Bundling)和前端构建工具(Build Tools)的作用

聚沙成塔每天进步一点点 本文回顾 ⭐ 专栏简介前端框架中的前端打包(Bundling)和前端构建工具(Build Tools)的作用1. 引言2. 前端打包(Bundling)2.1 概述2.2 常见的打包工具2.2.1 Webpack2.2.2 Parcel 2.3 …

合约期VS优惠期,搞明白他们的区别才能避免很多坑!

在购买流量卡时,相信大家也都发现了,市面上的不少套餐都是有合约期和优惠期的,尤其是联通和移动,那么,什么是合约期?什么又是优惠期呢? ​ 其实,目前很多在网上办理的大流量卡都是有…

静态图和动态图中的自动求导机制详解

01 静态图与动态图的区别 之前在 [1] 中提到过,自动求导(AutoDiff)机制是当前深度学习模型训练采用的主要方法,而在静态图和动态图中对于自动求导的处理是不一样的。作为前置知识,这里简单进行介绍。 我们都知道静态…

【深度学习】tensorboard的使用

目前正在写一个训练框架,需要有以下几个功能: 1.保存模型 2.断点继续训练 3.加载模型 4.tensorboard 查询训练记录的功能 命令: tensorboard --logdirruns --host192.168.112.5 效果: import torch import torch.nn as nn impor…

排序算法(2)之选择排序----直接选择排序和堆排序

个人主页:C忠实粉丝 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 C忠实粉丝 原创 排序算法(2)之交换排序----冒泡排序和堆排序 收录于专栏【数据结构初阶】 本专栏旨在分享学习数据结构学习的一点学习笔记,欢迎大家在评论区交流讨论…

【系统架构设计师】七、信息安全技术基础知识(信息安全的概念|信息安全系统的组成框架|信息加解密技术)

目录 一、信息安全的概念 1.1 信息安全的基本要素和范围 1.2 信息存储安全 1.3 网络安全 二、信息安全系统的组成框架 2.1 技术体系 2.2 组织机构体系 2.3 管理体系 三、 信息加解密技术 3.1 数据加密 3.2 对称加密技术 3.3 非对称加密算法 3.4 数字信封 3.5 信…

信息系统项目管理师(项目管理师)

项目管理者再坚持“聚焦于价值”原则时,应该关注的关键点包括:1价值是项目成功的最终指标;2价值可以再整个项目进行期间、项目结束或完成后实现;3价值可以从定性和/或定量的角度进行定义和衡量;4以成果为导向&#xff…

鸿蒙开发系统基础能力:【@ohos.pasteboard (剪贴板)】

剪贴板 说明: 本模块首批接口从API version 6开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 导入模块 import pasteboard from ohos.pasteboard;属性 系统能力: 以下各项对应的系统能力均为SystemCapability.MiscServices.Pasteb…

ubuntu 18 虚拟机安装(1)

ubuntu 18 虚拟机安装 ubuntu 18.04.6 Ubuntu 18.04.6 LTS (Bionic Beaver) https://releases.ubuntu.com/bionic/ 参考: 设置固定IP地址 https://blog.csdn.net/wowocpp/article/details/126160428 https://www.jianshu.com/p/1d133c0dec9d ubuntu-18.04.6-l…

相亲交友微信小程序系统源码

开启浪漫邂逅新篇章 相亲交友——随着年龄的增长,越来越多的人开始关注自己的婚姻问题,为了提高相亲服务的质量,这款应用就可以拓宽在线社交网络范围。​ 💑 引言:邂逅爱情的新方式 在繁忙的都市生活中,寻…

《梦醒蝶飞:释放Excel函数与公式的力量》6.1 DATE函数

6.1 DATE函数 第一节:DATE函数 1)DATE函数概述 DATE函数是Excel中的一个内置函数,用于根据指定的年、月、日返回对应的日期序列号。这个函数非常有用,尤其是在处理日期数据时,它可以帮助你构建特定的日期&#xff0…

文章解读与仿真程序复现思路——电网技术EI\CSCD\北大核心《计及氢储能与需求响应的路域综合能源系统规划方法》

本专栏栏目提供文章与程序复现思路,具体已有的论文与论文源程序可翻阅本博主免费的专栏栏目《论文与完整程序》 论文与完整源程序_电网论文源程序的博客-CSDN博客https://blog.csdn.net/liang674027206/category_12531414.html 电网论文源程序-CSDN博客电网论文源…

DOOPRIME:美联储降息何时到来?经济数据是关键

摘要: 美联储理事库克在纽约经济俱乐部的演讲中表示,降息时机取决于未来的经济数据和通胀走势。她预期,明年通胀将显著放缓,其中核心商品通胀可能保持轻微负增长,剔除住房的核心服务通胀将逐步放缓。尽管市场对降息时…

易查分小程序丨查询下拉选择如何设置?

老师在发布查询时,如果查询条件过长或难以记忆,学生家长经常输入不正确,或难以记住,应该怎样解决? 可以使用【查询条件下拉选择功能】,让学生家长在下拉框中直接选择查询条件。 查询下拉演示效果 &#x1f…

宠物领养救助管理系带万字文档java项目基于springboot+vue的宠物管理系统java课程设计java毕业设计

文章目录 宠物领养救助管理系统一、项目演示二、项目介绍三、万字项目文档四、部分功能截图五、部分代码展示六、底部获取项目源码带万字文档(9.9¥带走) 宠物领养救助管理系统 一、项目演示 宠物领养救助系统 二、项目介绍 基于springbootv…

代码随想录——K 次取反后最大化的数组和(Leetcode1005)

题目链接 贪心 class Solution {public int largestSumAfterKNegations(int[] nums, int k) {int sum 0;Arrays.sort(nums);// 先把负数转正for(int i 0; i < nums.length; i){if(nums[i] < 0 && k > 0){nums[i] -nums[i];k--;}sum nums[i];}Arrays.so…

springcloud-sentinel 限流组件中文文档

快速开始 欢迎来到 Sentinel 的世界&#xff01;这篇新手指南将指引您快速入门 Sentinel。 Sentinel 的使用可以分为两个部分: 核心库&#xff08;Java 客户端&#xff09;&#xff1a;不依赖任何框架/库&#xff0c;能够运行于 Java 8 及以上的版本的运行时环境&#xff0c…