MySql修改Root密码
前言
mysql5.7
记一次心酸的在Deepin(Ubuntu、linux)上安装mysql5.7的办法。弄了一天,最后终于成功了,期间还使用apt-get remove卸载了一次mysql-server mysql-client(卸载的时候可能会要求你使用apt-get autoremove)
1.MySQL root密码忘记,原来还有更优雅的解法!
2.解决mysqld_safe Directory ‘/var/run/mysqld’ for UNIX socket file don’t exists
3.linux mysql5.7设置root密码
总结如下:(注意应使用管理员权限,必要时使用sudo执行相关命令)
一、Linux修改用户密码
1.先停止MySQL服务
1 | ## 启动mysql |
2.跳过安全检查(这步容易出错,见下面说明)
1 | ## 第一种方法 |
(解释:设置了该参数,则实例在启动过程中会跳过权限表的加载,这就意味着任何用户都能登录进来,并进行任何操作,相当不安全。建议同时添加–skip-networking参数。其会让实例关闭监听端口,自然也就无法建立TCP连接,而只能通过本地socket进行连接。MySQL8.0就是这么做的,在设置了–skip-grant-tables参数的同时会自动开启–skip-networking)
3.重开一个shell,进入mysql
输入mysql命令,进入mysql客户端
1 | ## 启动mysql |
4.更改密码
1 | ## 先执行刷新权限的命令 |
解释
免密码登录进来后,直接执行alter user操作是不行的,因为此时的权限表还没加载。可先通过flush privileges操作触发权限表的加载,再执行alter user操作。需要注意的是,通过alter user修改密码只适用于MySQL5.7和8.0,如果是MySQL 5.6,此处可写成:update mysql.user set password=password(‘123456’) where host=’localhost’ and user=’root’;
5.重启mysql
1 | ## 退出mysql |
完成密码修改
下一步是安装MySQL-workbench,一条命令,安装卸载都很方便。
sudo apt-get install mysql-workbench
要安装Navicat,其实挺麻烦的,界面也是丑的不行,主要是Navicat是运行在wine下的,安装后电脑里会多了很多莫名奇妙的wine程序,比如notepad,webbrower等,还没想到方法删掉它们。
1.Linux(centos7)下查看MySQL的安装路径
2.CentOS修改MySQL的root密码
3.How to start MySQL with –skip-grant-tables?
4.How to restart MySQL with –skip-grant-tables if you can’t use the root password?
5.mysql远程登录及修改用户密码
问题
其实上面多个网站基本思路都是正确的,都是要进入忽略安全模式,但是有时候在使用–skip-grant-tables参数时,会报些错误,比如:
(1) ”plugin auth_socket is not loaded“
解决方式是:
1 | use mysql; |
(2) “mysqld_safe Directory ‘/var/run/mysqld’ for UNIX socket file don’t exists”
解决方式是:
1 | mkdir -p /var/run/mysqld |
(3) “ERROR 1290 (HY000): The MySQL server is running with the –skip-grant-tables option so it cannot execute this statement”
解决方式是:参考资料(1)中的内容,先执行一遍flush privileges;
1 | mysql> alter user 'root'@'localhost' identified by '123'; |
(4) “Unknown column ‘password’ in ‘field list’”
解决方式是:新安装的MySQL5.7,登录时提示密码错误,安装的时候并没有更改密码,后来通过免密码登录的方式更改密码,输入update mysql.user set password=password(‘root’) where user=’root’时提示ERROR 1054 (42S22): Unknown column ‘password’ in ‘field list’,原来是mysql数据库下已经没有password这个字段了,password字段改成了:authentication_string,所以更改语句替换为
update mysql.user set authentication_string=password(‘root’) where user=’root’ ;
即可,然后执行:
1 | mysql> flush privileges; |
(5) /usr/bin/mysqld_safe: No such file or directory
执行mysqld_safe,出现了没有这个文件或者目录。这个时候可以通过修改my.conf配置文件的形式进行mysql的启动。
1.在Mysql中如何显示所有用户?
二、Win10下修改密码
1、在服务里面打开MySQL80服务的属性,查看启动参数–defaults-file=”C:\ProgramData\MySQL\MySQL Server 8.0\my.ini”,复制这句my.ini的路径,以及mysql安装路径。
2、停止mysql服务
3、打开PowerShell,进入mysql的安装目录,输入以下命令,打开mysql服务
1 | PS C:\Program Files\MySQL\MySQL Server 8.0\bin> .\mysqld.exe --defaults-file="C:\ProgramData\MySQL\MySQL Server 8.0\my.ini" --skip-grant-tables --shared-memory |
4、另开一个PowerShell,进入mysql安装目录,执行:
1 | PS C:\Program Files\MySQL\MySQL Server 8.0\bin> .\mysql.exe |
5、刷新数据库权限:
1 | mysql> FLUSH PRIVILEGES; |
6、修改root密码:
1 | mysql>ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码'; |
7、退出PowerShell中的mysql,重启服务里面的mysql。