mysql解决忘记密码,远程链接问题,以及建立用户指定数据库

1.mysql忘记root密码(版本5.7)

首先需要找到mysql的配置文件,我的是ubuntu16.4,配置文件mysqld.cnf在/etc/mysql/mysql.conf.d下
sudo vim mysqld.cnf
然后在[mysqld]下面添加一行
skip-grant-tables
之后重启mysql服务
sudo service mysql restart
运行mysql命令 不使用账户密码进入mysql
切换到mysql数据库use mysql
执行update mysql.user set authentication_string=password('123qwe') where user='root' and Host ='localhost';
如果显示query ok 表示执行成功 需要退出mysql 在进入配置文件把之前添加的skip-grant-tables删除或者注释
之后重启mysql,大功告成
注:根据mysql配置的密码等级不同,在重置密码的时候需要注意密码等级或者修改密码等级,否则会出现Your password does not satisfy the current policy requirements这个错误,此时最简单的就是修改密码等级,把密码等级修改到你当前设置的等级即可
进入mysql执行’set global validate_password_policy=0;’这里把密码等级设置为普通等级,密码等级的话可以参考这篇博客传送门

mysql远程无法连接

首先呢就是检查是否可以ping通目的主机了,还有就是mysql的端口是否可以ping通,因为防火墙以及一些云服务器的安全组是可以屏蔽到3306端口的,阿里云的就是这样,我的服务器屏蔽了3306端口,结果搞了大半天,忽然想起来有这么个玩意……….。对于防火墙屏蔽呢,对应系统去百度就行啦,这里只说mysql配置上的问题
1.进入mysql配置文件 修改bind-address = 0.0.0.0 (原来默认值为127.0.0.1 只允许本机访问的哦,修改后可以是任意ip都可以访问)
然后就重启一下mysql。
2.需要设置账户的访问权限,一般刚安装的mysql都是只能通过localhost访问,可以执行下列两个命令先查看下,如果root对应的host没有 % 这一项的话就是这个问题啦
use mysql;
select host,use from user

具体修改呢就需要执行这个命令就ok了
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'yourPassword' WITH GRANT OPTION;
query ok就成功了
注:mysql修改这些配置之后会变得非常玄学 最好刷新一系 执行flush privileges命令即可

创建新用户并给授权指定的数据库权限

还是执行命令
创建一个账户
CREATE USER 'test'@'%' IDENTIFIED BY 'test';
修改密码
update mysql.user set password=password('新密码') where user='test';
给他权限
grant all privileges on 想授权的数据库.* to 'test'@'%';
这个all就是所有权限了,当然也可以换成select,delete,update,create,drop等给与特殊的权限

你可能感兴趣的:(mysql)