赞
踩
mysql 的使用
我在使用 mysql 中的一些问题,其中有其他主机访问 mysql 失败的问题,修改用户密码失败的问题等,花了不少时间解决,其中修改用户密码花的时间最多,因为 mysql 8.0 之后取消了password() 函数并且将 mysql.user 表中的password 字段变成了 authentication_string 字段,导致网上一大堆教程都失去了作用,我也是尝试了多次才解决的这个问题,可能不是最好的,如果小伙伴有更好的解决方法,欢迎在评论区留言。
那么废话不多说,下面就是我解决问题之后的总结:
docker 启动 mysql
1. 启动
docker run --name containerName -p hostPort:containerPort -e MYSQL\_ROOT\_PASSWORD=your_password -d mysql
-p: 端口映射,mysql 容器端口指定了 3306,所以应该 your_port:3306
-e: 环境变量,设置 root 密码(必须有)
-d: 后台启动(可以没有)
--name:容器名(可以不写)
2. 在运行的容器中执行命令
docker exec -it containerID /bin/bash
-it: 分配终端并且交互式命令
3. 登陆 root 用户
mysql -h host -P hostPort -u root -p your_password
-h:登陆地址(不需要就不用写)
-P:前面自己分配的端口
-u:mysql 的用户
-p:密码
创建与删除用户
1. 标准格式
CREATE USER userName@host IDENTIFIED BY 'password';
host: 指定登陆地址(一般有localhost本地,%表示任意)
userName:要创建的用户名
'password':登陆那个用户需要的密码
2. 创建远程连接用户
CREATE USER userName IDENTIFIED BY 'password';
省略了 @host,这样写创建的是外部可以连接的用户
3. 删除用户
DELETE FROM user WHERE user='userName' and host='host';
设置权限
1. 标准格式
GRANT privileges ON datebaseName.tableName TO 'userName'@'host';
privileges:想要授予用户的权限
datebaseName.tableName:对哪个数据库的哪个表的权限,所有数据库下的所有表用 *.*表示
2. 授予用户所有库下所有表所有权限
GRANT all privileges ON *.* TO 'userName'@'%' WITH GRANT OPTION;
WITH GRANT OPTION: 授予用户授予其他用户权限的权限
3. 刷新权限表
FLUSH PRIVILEGES;
4. 查看权限
SELECT * FROM mysql.user WHERE user='userName' \G;
更改用户密码
1. 清空用户的 authentication_string 字段
UPDATE mysql.user SET authentication_string='' WHERE user='userName' and host='host';
2. 更改密码
ALTER user 'userName'@'host' IDENTIFIED BY 'newPassword';
注意要从 root 用户才能修改密码
最后感谢观看~~~
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。