本篇文章基于mysql8,写的是自己的平时的坑,逻辑很乱,勿喷
命令
- 停止 mysql 服务:
net stop mysql
- 开始 mysql 服务:
net start mysql
- 跳过密码登陆mysql:
mysqld --console --skip-grant-tables --shared-memory
- 登录 mysql :
mysql -u root -p
- (永久)修改密码:
ALTER USER 'root'@'localhost' IDENTIFIED BY '修改的密码' PASSWORD EXPIRE NEVER
- 刷新权限:
flush privileges
- 初始化:
mysqld --initialize
- 安装mysql:
mysqld -install
- MySQL5.6初始化的时候第一次设置密码:
set PASSWORD=PASSWORD('你的密码')
开启远程配置
-
查看是否创建了用户以及加密格式:
select user,host,plugin from user
-
创建用户:
create user 'root'@'%' identified by '这里填写你的mysql密码';
-
开启权限:
grant all on *.* to 'root'@'%';
或者
grant all privileges on 数据库名.* to 用户名@localhost;
最近在本地尝试了一下是可以的,但是没有在云端尝试,本文中的命令都是在服务器上处理的,此命令除外 -
刷新权限:
flush privileges
先查看自己是否有创建 user为root ,host为% 的用户信息
如果没有创建,请先创建这个用户create user 'root'@'%' identified by '这里填写你的mysql密码';
然后再开启对应的权限grant all on *.* to 'root'@'%';
之后记得刷新一下权限即可flush privileges
连接数据库后出现
SQLSTATE[HY000] [2054] The server requested authentication method unknown to the client
- 原因:mysql 8 用户认证的加密方式和php7不兼容导致的,mysql8.0中默认方式为caching_sha2_password,引起老版本兼容性问题,老版本加密方式为mysql_native_password。
- 查看加密方式:
- 解决办法:更换为老版本加密方式即可
ALTER USER 'root'@'localhost' identified with mysql_native_password BY '你的密码';
- 刷新权限:
flush privileges
后,查看加密方式
3.30
- 当你update 修改了user表里面host列的内容时
- 请一定要重新给给用户赋予数据的权限
grant all privileges on 数据库名.* to 用户名@用户名对应的行的host值
(root的话就不用) - 最后的最后一定要刷新一下权限
flush privileges
5.24号总结
创建用户
- 创建验证方式为mysql_native_password的密码(在服务器上这样设置可以用于远程连接)
create user 'root'@'%' identified WITH mysql_native_password by '这里填写你的mysql密码';
- 默认验证方式:
create user 'root'@'%' identified by '这里填写你的mysql密码'
授权
GRANT privileges ON databasename.tablename TO 'username'@'host' [WITH GRANT OPTION];
privileges:用户的操作权限,如SELECT,INSERT,UPDATE等,如果要授予所的权限则使用ALL
databasename:数据库名
tablename:表名,如果要授予该用户对所有数据库和表的相应操作权限则可用表示,如.*
WITH GRANT OPTION 该用户是否可授权
如
- 授予部分权限:
GRANT select,insert,update,delete,create ON 数据库名.* TO '用户名'@'用户名对应的行的host值' WITH GRANT OPTION
- 授予所有权限:
GRANT ALL ON 数据库名.* TO '用户名'@'用户名对应的行的host值'
2020.9.21
删除一个用户有2中办法:
- 使用
delete
进行删除,但是如果再次创建同样的名字的用户,会导致无法创建,会类似的错误“ERROR 1396 (HY000): Operation CREATE USER failed for 'sinmu'@'localhost'”
- 使用
drop
进行删除,可以进行同名创建
mysql5.6
- 创建一个用户
create user "username"@"localhost" identified by "yourpassword"
- 刷新权限
flush privileges