目录
1、以管理员身份运行命令提示符,下转到mysql的bin目录下
下载mysql8.0二进制包
下载地址:MySQL :: Download MySQL Community Server
编辑my.ini配置文件
解压二进制包,新建/编辑my.ini配置文件(如果不存在则新建)
[client] #客户端设置,即客户端默认的连接参数
# 设置mysql客户端连接服务端时默认使用的端口
port=3306
#默认编码
default-character-set = utf8mb4
[mysql] #客户端设置
#MySQL 提示符配置
#用户名@主机名+mysql版本号+数据库名
prompt=\\u@\\h \\v [\\d]>\\_
# 设置mysql客户端默认字符集
default-character-set = utf8mb4
[mysqld] #服务端基本设置
# 默认连接端口
port=3306
# MySQL安装根目录的路径
basedir=D:\Server\mysql-8.0\mysql-8.0.38-winx64
# MySQL服务器数据目录的路径
datadir=D:\Server\mysql-8.0\mysql-8.0.38-winx64\data
# 允许最大连接数
max_connections=200
# 允许连接失败的次数。这是为了防止有人从该主机试图攻击数据库系统
max_connect_errors=10
#服务端默认编码
character_set_server = utf8mb4
#在创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
# 配置时区
default-time_zone='+8:00'
安装使用服务
安装并配置MySQL
1、以管理员身份运行命令提示符,下转到mysql的bin目录下
安装MySQL服务并指定配置文件:
./mysqld.exe --install "MySQL" --defaults-file="D:\Server\mysql-8.0\mysql-8.0.38-winx64\my.ini"
注:此命令后面的my.ini配置文件的路径要与你的路径一致
2、初始化MySQL
mysqld --initialize --console
在这里,初始化会生成data文件夹并产生一个随机密码,记住这个密码,后面登录验证的时候会用到。
注:如果不小心关闭窗口,忘记初始化生成的密码,可以删除初始化生成的data文件夹,重新初始化即可。
3、开启MySQL的服务
net start mysql
登录验证
mysql -uroot -p
1、修改root密码
ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';
2、验证配置文件是否生效
\s
3、退出MySQL
\q
附完整步骤
#1.安装MySQL服务并指定配置文件
./mysqld.exe --install "MySQL" --defaults-file="D:\Server\mysql-8.0\mysql-8.0.38-winx64\my.ini"
#2.初始化mysql,这步会产生随机root密码,需暂时记住,下面命令行登录用
./mysqld.exe --initialize --console
#3.启动mysql服务
net start mysql
#4.命令行登录
./mysql.exe -uroot -p
#5.改root密码
ALTER USER 'root'@'localhost' IDENTIFIED BY 'yangxxx';
#6.查看配置
\s
#7.退出mysql命令行
\q
#8.root登录
./mysql.exe -uroot -hlocalhost -pyangxxx
#9.添加新用户
CREATE USER 'yang'@'localhost' IDENTIFIED BY 'yangxxx';
#10.给新用户赋予权限:
GRANT ALL PRIVILEGES ON *.* TO 'yang'@'localhost';
#11.执行以下命令,使改变立即生效
FLUSH PRIVILEGES;
完
创建新用户
在MySQL中,创建新用户并赋予权限可以通过以下步骤完成:
1、创建新用户
使用 CREATE USER
语句来创建新用户。如:
CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password';
这条语句创建了一个名为 newuser
的用户,该用户只能从 localhost
连接,并且密码是 password
。
2、赋予权限
使用 GRANT
语句来赋予用户权限。例如:
GRANT ALL PRIVILEGES ON database_name.* TO 'newuser'@'localhost';
这条语句赋予 newuser
用户对 database_name
数据库的所有权限。
3、刷新权限
使用 FLUSH PRIVILEGES
语句来刷新权限,使更改立即生效。例如:
FLUSH PRIVILEGES;
以下是一个完整的示例:
-- 创建新用户
CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password';
-- 赋予权限
GRANT ALL PRIVILEGES ON database_name.* TO 'newuser'@'localhost';
-- 刷新权限
FLUSH PRIVILEGES;
详细说明:
-
CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password';
'newuser'@'localhost'
:用户名和主机名。主机名可以是localhost
、%
(表示任何主机)或其他特定主机。IDENTIFIED BY 'password'
:设置用户的密码。
-
GRANT ALL PRIVILEGES ON database_name.* TO 'newuser'@'localhost';
ALL PRIVILEGES
:赋予所有权限。ON database_name.*
:指定数据库和表。*
表示所有表。TO 'newuser'@'localhost'
:指定用户和主机。
-
FLUSH PRIVILEGES;
- 刷新权限表,使更改立即生效。
通过这些步骤,在MySQL中创建新用户并赋予相应的权限。
其他创建方式:MySQL数据库——MySQL创建用户(3种方式)_数据库_Itmastergo-GitCode 开源社区
QT中使用MySQL
参见博文:Qt中使用MySQL数据库详解,好用的模块类封装_mysql连接包加入到qt指定的包里,然后添加为库怎么操作-CSDN博客
MySQL忘记密码解决办法
1、关闭MySQL服务
以管理员模式打开命令运行行,运行 net stop mysql 即可
net stop mysql
2、下转到MySQL的bin目录下,跳过MySQL密码验证
mysqld --console --skip-grant-tables --shared-memory
注:如果已配置MySQL环境变量,可以在任意路径下进行,不必转到bin目录下
3、无密码方式进入MySQL
注意:在进行第三步时重开一个cmd窗口,第二步执行的cmd窗口不要关
mysql -uroot -p
提示输入密码,不用管,直接回车确认即可
4、将登陆密码设置为空
use mysql;
update user set authentication_string='' where user='root';
退出MySQL:
\q
5、关闭第二步的cmd窗口
6、启动MySQL服务
net start mysql
7、无密码方式登录MySQL
mysql -uroot -p
提示输入密码,不用管,直接回车确认即可
8、修改密码
ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';
9、退出MySQL
\q
10、重新登录验证密码是否修改成功
一行命令登录MySQL:
mysql -uroot -hlocalhost -p123456
mysql8.0登录失败问题
创建用户时,如果是这样创建的:
create user '用户名'@'连接的IP' identified by '密码';
例如:
create user 'testuser1'@'127.0.0.1' identified by 'root123';
MySQL 8.0+版本 创建新用户登录失败,报错:
C:\Windows\System32>mysql -u testuser1 -p
Enter password: *******
ERROR 2061 (HY000): Authentication plugin 'caching_sha2_password' reported error: Authentication requires secure connection.
原因分析
MySQL8.0默认指定使用需要SSL的身份验证插件caching_sha2_password,而我们在创建账号时候没有指定REQUIRE SSL。为了降低这件事情的复杂性,我们选择了绕过SSL插件的验证,改为mysql_native_password验证来登陆即可。
解决方案
既然是新建的账户,那先登录root账户,可以直接删掉上面新创建的账户,然后新创建一个账户,指定验证密码方式:
mysql8建议用以下语句:
create user '用户名'@'连接的IP' identified with mysql_native_password by '密码';
例如:
create user 'testuser4'@'%' identified with mysql_native_password by 'root123';
再给新账户授予权限:
grant 权限 on 数据库名.表 to '用户名'@'连接的IP'
例如:
grant all privileges on db_sqllearn.* to 'testuser4'@'%';
如何关闭8.0的ssl连接?
注意:
- MySQL 5.7中,默认的身份验证插件还是为 mysql_native_password。
- 在MySQL 8.0中,caching_sha2_password是默认的身份验证插件,而不是 mysql_native_password。
配置信息更改:
vim /etc/my.cnf
#新增,禁用ssl
skip_ssl
default_authentication_plugin = mysql_native_password
Mysql命令:
mysql>ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
#
#mysql>ALTER USER 'root'@'%' IDENTIFIED WITH caching_sha2_password BY '123456';
经过以上操作后,可以
MySQL查看ssl配置以生效及相关信息:
show global variables like '%ssl%';
MySQL查看ssl证书的有效时间:
SHOW STATUS LIKE 'Ssl_server_not%';
推荐客户端工具SQLyog
常用的客户端工具有很多,如navcat,phpMyAdmin,Navicat,MySQL Workbench等。然而最小巧好用的是sqlyog。SQLyog是一个易于使用的、快速而简洁的图形化管理MYSQL数据库的工具,它能够在任何地点有效地管理你的数据库。而且它有Community社区版是免费的。
下载地址:
SQLyog-12.0.9-0.x64链接:
https://pan.baidu.com/s/1D_iRna8V90omfHsKHyeBtg 提取码: bqht
SQLyog-13.2.x64_Community链接:
https://pan.baidu.com/s/19xa_AVjxJugj_huqgZDVdg?pwd=free
附送阿里mysql十条规范
很多公司有很厚一本的 MySQL 规范,规范内容越多,越难落地执行。
阿里的MySQL建表 强制规范 只有10条,大伙可以参考借鉴。
画外音,另外:
索引强制规范有4条,SQL强制规范有9条;
建议规范与参考规范若干。
规范一:是否字段
1. 表达是否概念的字段,必须使用is_xxx的形式命名;
2. 数据类型必须是 unsignedtinyint;
3. 1表示是,0表示否;
举例:是否删除
正确:使用is_deleted,1表示删除,0表示未删除
错误:deleted, if_deleted, delete_or_not
规范二:字母与数字
1. 表名,字段名禁止出现大写;
画外音:MySQL在Windows下不区分大小写,Linux下虽然区分,但为了避免节外生枝,统一禁止大写。
2. 禁止数字开头,禁止两个下划线中间只有数字;
举例:
正确:aliyun_admin,level3_name
错误:AliyunAdmin,level_3_name
规范三:表名禁止使用复数
表名表示实体内容,不是实体数量,禁止使用复数。
规范四:禁止使用保留字
常见的例如:desc,range,match,delayed...
规范五:主键,唯一索引,普通索引命名规范
1. 主键索引名:pk_xxx
画外音:primary key
2. 唯一索引名:uk_xxx
画外音:unique key
3. 普通索引名:idx_xxx
画外音:index
规范六:小数类型规范
1. 小数类型使用decimal;
2. 禁止使用float和double;
画外音:float和double存在精度损失,比较的时候,可能得到意想不到的结果。
3. 如果范围超过decimal,可以拆成整数与小数分开存储;
规范七:字符串长度非常相近,必须使用定长char
画外音:预先分配存储空间,不会触发重新分配。
规范八:可变字符串规范
1. 如果字符串长度较长,且内容长度差异较大,使用varchar;
画外音:不预先分配存储空间,比较节省空间。
2. 如果字符串长度大部分超过5000,使用text,独立出一张表单独存储;
画外音:避免影响主表其他字段索引效率。
规范九:强制字段
1. 必须具备id字段:类型为bigintunsigned,单表时自增,步长为1,不具备业务含义;
2. 必须具备create_time字段:类型为datetime(除非记录时区信息,使用timestamp);
3. 必须具备update_time字段:同上;
规范十:禁止进行物理删除操作
画外音:逻辑操作保留了数据资产的同时,能够追溯操作行为。
【阿里开发人员强制要求的15条MySQL数据库开发规范 - 今日头条】https://www.toutiao.com/article/6648139519788843527/?share_token=7aac08a1-eb80-4bb6-9553-7d1d40859be6&iid=0&app=news_article&use_new_style=1
其他资源
【MySql】MySQL 如何创建新用户_mysql创建新用户-CSDN博客
Windows 安装MySQL 8.0 (非常详细)从零基础入门到精通,看完这一篇就够了_windows安装mysql8-CSDN博客
MySQL数据库——MySQL创建用户(3种方式)_数据库_Itmastergo-GitCode 开源社区
MySQL 8.0 安装部署3个注意事项_mysql8.0+为什么ssl-CSDN博客