mysql
mysql
- mysql
- MariaDB
- 安装
- 启用远程访问权限
- mysql 数据类型
- 重置自增量
- 密码
- 报错收集
- mysql Failed! Error: SET PASSWORD has no significance for user ‘root’@’localhost’ as the authentication method used doesn’t store authentication data in the mysql server. Please consider using ALTER USER
- ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
- ERROR 1396 (HY000): Operation ALTER USER failed for 'root'@'%'
MariaDB
MariaDB 起源于 MySQL。当 Oracle 公司于 2010 年收购了 MySQL 后,MySQL 的原始开发者之一 Monty Widenius 启动了 MariaDB 作为 MySQL 的一个分支。目的是确保社区能够保持一个完全开源的版本。
MariaDB 设计为与 MySQL 兼容,初衷是作为 MySQL 的直接替代品。这意味着它使用与 MySQL 相同的协议和 API。因此,在很多情况下,用于 MySQL 的工具和客户端(例如 mysql
命令行工具) 也可以与 MariaDB 一起使用。
安装
官方安装包
MySQL :: Download MySQL Installer --- MySQL :: 下载 MySQL 安装程序
在 MySQL :: MySQL Downloads --- MySQL :: MySQL 下载 找到 Community 版本入口
直接装的话可能会卡在这一步:
安装完 VC++
后再次运行安装程序会发现还需要装 Python
在 22 年, Python 3.10
的保有量就比较大了, 因此这里选择了安装 Python3.10
安装完 Python 后再次运行 MySQL 安装程序
这里设置了一个比较弱的密码是有相关需求, 正常使用应当设置一个强密码
使用刚才创建的 root 密码 check 一下链接再 Next
\
手动配置
该链接指向的是截至 2020.12.2 最新版的 mysql 社区版最新下载链接, 或者自行到 mysql :: mysql Downloads 选择具体版本下载
下载完成后解压到你想把 mysql 安装在的目录
该目录不可有中文与空格
安装 mysql 的服务
- 打开解压后的文件夹中的 bin 文件夹,单击 Windows 文件资源管理器左上角的
文件
->打开Windows Powershell
->以管理员身份打开Windows Powershell
Win11 的话
win+X
选择Windows Powershell(管理员)
打开, 使用转到当前文件夹路径cd [当前文件夹路径]
- 输入并回车
.\mysqld --install
- 之后会显示安装成功的提示:
Service successfully installed.
- 打开解压后的文件夹中的 bin 文件夹,单击 Windows 文件资源管理器左上角的
初始化 mysql
输入
.\mysqld --initialize --console
并回车
将会显示几行文字,复制最后一行
root@localhost:
字样后面的字符串o?0yxuffh?E.
这串字符串是初始化生成的随机密码
开启 mysql 的服务
输入
net start mysql
并回车
将会显示
mysql 服务已经启动成功
的字样
登录验证 mysql 是否安装成功
输入
.\mysql -u root -p
并回车,将会让你输入密码
密码就是刚才生成的临时密码,输入并回车即可
这里需要注意的是: 若刚才生成临时密码的时候最后有个
.
的话注意这里的.
不是句号,而是密码的一部分登陆成功后当前光标前面会有
mysql>
修改密码
登录成功后输入
alter user 'root'@'localhost' identified by 'root';
这样即可将密码改为
root
同理,将最后 by 后面的
root
改成你自己想修改成的密码吧修改成功后将会显示
Query OK, 0 rows affected
字样输入
exit
并回车以退出 mysql
验证密码
输入
.\mysql -u root -p
并回车,将会让你输入密码
输入你刚才修改好的密码
能够再次成功进入则修改成功
设置系统的全局变量:
桌面
->右键"此电脑"
->属性
->左侧高级系统设置
->环境变量
Win 11 的话
设置 -> 系统 -> 关于 -> 高级系统设置 -> 环境变量
进入后上面是
用户变量
,下面是系统变量
- 点击
下面的新建按钮
, 新建一个系统变量
- 变量名填
mysql
- 变量值填你将 mysql 安装的位置
- 例如我填的是
C:\Database\mysql\mysql-8.0.22-winx64
- 例如我填的是
- 单击
确定
以完成新建
- 变量名填
- 进入
系统变量
的Path
变量- 单击
新建
- 输入
%mysql%\bin
- 单击
- 完成后逐级确定以完成配置
- 点击
配置完系统变量之后要登录 mysql 只需
Win + R
输入cmd
并回车打开命令行窗口输入
mysql -u root -p
并回车即可
在 mysql 目录下创建一个 ini 或 cnf 配置文件,在这里我创建的是 ini 配置文件,里面写的代码是 mysql 的一些基本配置
- mysql 目录就是刚才配置环境变量时的 mysql 安装位置
- 我的就是
C:\Database\mysql\mysql-8.0.22-winx64
- 打开该文件夹新建一个文本文档并连同文件扩展名一同改为
my.ini
- 打开
my.ini
,键入以下配置并保存退出[mysqld] character-set-server=utf8mb4 bind-address=0.0.0.0 port=3306 default-storage-engine=INNODB [mysql] default-character-set=utf8mb4 [client] default-character-set=utf8mb4
- 打开
- 我的就是
- mysql 目录就是刚才配置环境变量时的 mysql 安装位置
到这里就已经配置完成了
你可以在 Navicat 中连接配置好的 mysql
- 打开 Navicat
- 左上
连接
->mysql
- 连接名自拟
- 主机:
localhost
- 端口:
3306
- 用户名:
root
- 密码:你刚才配置好的 mysql 的密码
- 输入完成并单击
确定
后会在当前窗口左栏出现一个你自拟的链接名,双击它,若它变绿了就说明连接上你配置的 mysql 了
到这里 mysql 的安装,配置与连接就已经完成了,更详细的步骤以及可能出现的问题可以移步原博主的博客链接查看
如果有空的话别忘了给博主点个
推荐
哦若忘记密码可以参考这篇文章
kali 自带 MariaDB, 基本兼容 mysql
在部署 gshark时要安装 mysql, 且其只支持 mysql
搜索 linux 安装 mysql 多半出来的是 CentOS 的陈年教程
搜索 Debian 安装 mysql 找到了 如何在Debian 10安装mysql | myfreax 不过
# 启动 mysql 服务
service mysql start
# 初始化密码
mysql_secure_installation
然后可以一路 yes 下去(或者按照自己的需求选择配置)
mysql在默认的 Debian 存储库中不可用。 MariaDB 是 Debian 10中的默认数据库。
要将mysql存储库添加到您的系统,请访问mysql仓库下载页面并使用wget命令下载最新mysql。
wget https://repo.mysql.com//mysql-apt-config_0.8.24-1_all.deb
# 安装此 deb 软件包
apt install ./mysql-apt-config_0.8.24-1_all.deb
如何在 Ubuntu 20.04 上安装 mysql-阿里云开发者社区 (aliyun.com)
sudo apt update
sudo apt install mysql-server
# 安装完后会自动启动后, 可以执行如下命令查看其运行状态
sudo systemctl status mysql
# mysql 安装文件附带了一个名为mysql_secure_installation的脚本,它允许你很容易地提高数据库服务器的安全性
sudo mysql_secure_installation
Docker配置mysql容器+远程连接(全流程) _卷、就硬卷的博客-CSDN博客
docker pull mysql
docker run -d -p [宿主机端口]:3306 -e mysql_ROOT_PASSWORD=[初始化root密码] --name [自定义一个可辨识的容器名] mysql
# 进入 docker 容器
docker exec -it [上面自定义的可辨识的容器名] bash
# 如果想远程连接且mysql在docker里的话可以执行
alter user 'root'@'%' identified with mysql_native_password by 'root';
如果出现报错, 可以参考本文最后一节的报错收集中的相关条目
启用远程访问权限
默认情况下, MySQL 只允许本地登录, 因此远程连接的话需要修改配置
打开 MySQL Command Line
输入密码以登入, 然后
use mysql
select User,authentication_string,Host from user;
可以看到当前只有一个 root 用户绑定在 localhost 上, 可以直接将此表中 root 对应的 Host 改为 % 来允许远程登录
update user set host='%' where user='root';
# 需要通过FLUSH PRIVILEGES刷新权限表使修改生效
FLUSH PRIVILEGES;
然后就可以远程连接了:
mysql 数据类型
mysql 数据类型 | 菜鸟教程 (runoob.com)
- mysql 中定义数据字段的类型对你数据库的优化是非常重要的。
- mysql 支持多种类型,大致可以分为三类:
- 数值
- 日期/时间
- 字符串(字符)类型。
数值类型
- mysql 支持所有标准 SQL 数值数据类型。
- 这些类型包括
- 严格数值数据类型(INTEGER、SMALLINT、DECIMAL 和 NUMERIC)
- 近似数值数据类型(FLOAT、REAL 和 DOUBLE PRECISION)。
- 这些类型包括
- 关键字 INT 是 INTEGER 的同义词,关键字 DEC 是 DECIMAL 的同义词。
- BIT 数据类型保存位字段值,并且支持 MyISAM、MEMORY、InnoDB 和 BDB 表。
- 作为 SQL 标准的扩展,mysql 也支持整数类型 TINYINT、MEDIUMINT 和 BIGINT。
- 下面的表显示了需要的每个整数类型的存储和范围。
Navicat 中设计表时,数值类型数据的长度设置与字符类型的长度设置是不一样的
mysql字段int类型的长度INT(M)_乖乖康少的博客-CSDN博客_mysql int 长度
- char类型数据的长度为字符(字母或汉字)的个数
- varchar类型数据的长度为字符(字母或汉字)的最大个数
- int类型的长度指的是显示宽度
- 长度的设定值范围 1~255
- 设置 0 时自动转为 11
- 不设置时自动转为默认的 11
- 在此范围内任意长度值的字段值范围都是
- -2147483648~2147483647
即 ~
也就是说:int(1)、int(4)、int(11)和 int(110)表示意思是一样的
- -2147483648~2147483647
- 长度的设定值范围 1~255
- 要查看出不同效果记得在创建类型的时候加 zerofill 这个值(INT(M) ZEROFILL) ,表示用 0 填充,否则看不出效果的
日期和时间类型
- 表示时间值的日期和时间类型为 DATETIME、DATE、TIMESTAMP、TIME 和 YEAR。
- 每个时间类型有一个有效值范围和一个"零"值,当指定不合法的 mysql 不能表示的值时使用"零"值。
- TIMESTAMP 类型有专有的自动更新特性,将在后面描述。
字符串类型
- 字符串类型指 CHAR、VARCHAR、BINARY、VARBINARY、BLOB、TEXT、ENUM 和 SET。
- 该节描述了这些类型如何工作以及如何在查询中使用这些类型。
- 注意:
- char(n) 和 varchar(n) 中括号中 n 代表字符的个数,并不代表字节个数,比如 CHAR(30) 就可以存储 30 个字符。
- CHAR 和 VARCHAR 类型类似,但它们保存和检索的方式不同。它们的最大长度和是否尾部空格被保留等方面也不同。在存储或检索过程中不进行大小写转换。
- BINARY 和 VARBINARY 类似于 CHAR 和 VARCHAR,不同的是它们包含二进制字符串而不要非二进制字符串。也就是说,它们包含字节字符串而不是字符字符串。这说明它们没有字符集,并且排序和比较基于列值字节的数值值。
- BLOB 是一个二进制大对象,可以容纳可变数量的数据。
- 有 4 种 BLOB 类型:TINYBLOB、BLOB、MEDIUMBLOB 和 LONGBLOB。
- 它们区别在于可容纳存储范围不同。
- 有 4 种 TEXT 类型:TINYTEXT、TEXT、MEDIUMTEXT 和 LONGTEXT。
- 对应的这 4 种 BLOB 类型,可存储的最大长度不同,可根据实际情况选择。
- 有 4 种 BLOB 类型:TINYBLOB、BLOB、MEDIUMBLOB 和 LONGBLOB。
重置自增量
mysql重置自增字段的起始值 - 简书 (jianshu.com)
面试官:mysql如何重置自增id_wx6010cbc8d50ca的技术博客_51CTO博客
mysql / MariaDB 重置自增 ID (AUTO_INCREMENT)教程 - 完美保留表数据的终极解决方案 - 卡拉云 (kalacloud.com)
密码
修改密码
[MySQL修改密码的3种方式 (biancheng.net)](http://c.biancheng.net/view/7152.html#:~:text=步骤 1)
# 修改 root@localhost 密码为 new_password
ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';
# 上述指令只允许本地登录, 如果需要远程连接 mysql 的话还需要
ALTER USER 'root'@'%' IDENTIFIED BY 'new_password';
重置密码
忘记mysql数据库的root密码时如何重置密码 (aliyun.com)
如果忘记了 mysql 的密码可以修改配置文件登录时跳过密码然后再在数据库中修改密码
修改 /etc/mysql/my.cnf
文件
也有可能在
/etc/my.cnf
, 以实际目录为准
在 [mysqld]
字段下新增如下内容并保存
skip-grant-tables
然后重启并进入 mysql
# 重启 mysql
service mysql restart
# 进入 mysql
mysql
# 刷新权限并重置 root 密码
FLUSH PRIVILEGES;
ALTER USER 'root'@'localhost' IDENTIFIED BY '[新密码]';
注释或删除前面加在 /etc/my.cnf
中的 skip-grant-tables
并重启 mysql 即可
systemctl restart mysql
报错收集
mysql Failed! Error: SET PASSWORD has no significance for user ‘root’@’localhost’ as the authentication method used doesn’t store authentication data in the mysql server. Please consider using ALTER USER
# 将 root 密码更改为 SetRootPasswordHere
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'SetRootPasswordHere';
exit
# 重新配置 mysql 安全项
sudo mysql_secure_installation
# 使用上面修改的密码(如SetRootPasswordHere) 登入然后修改配置项即可
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
SHOW VARIABLES LIKE 'validate_password%';
set global validate_password_policy=0
简单来说就是更改密码策略为低, 不建议在公网上使用
ERROR 1396 (HY000): Operation ALTER USER failed for 'root'@'%'
linux mysql把root@localhost修改成root@% 的详细步骤谢谢_百度知道 (baidu.com)
在远程访问 docker 中的 mysql 的需求的实现中, 需要修改 root@%
的密码, 不过之前设置数据库的用户名是 root@localhost
, 当使用
alter user 'root'@'%' identified with mysql_native_password by '[密码]';
时报错 ERROR 1396 (HY000): Operation ALTER USER failed for 'root'@'%'
use mysql;
select user,host from user;
可以看到当前只有 root@localhost
所以要加一个 root@%
grant all on *.* to 'root'@'%' identified by '[密码]' with grant option;