今天在昨天基础上进入mysql又出错

今天早上开机进入mysql就出问题了

# mysql -uroot -p
Enter password: 
ERROR 1045 (28000): Access denied for user ‘root‘@‘localhost‘ (using password: YES)
# mysql
mysql> use mysql        #不能用mysql
ERROR 1044 (42000): Access denied for user ‘root‘@‘%‘ to database ‘mysql‘
mysql> use test            #能用test
Database changed
mysql> SELECT user,host,password FROM user;       
ERROR 1044 (42000): Access denied for user ‘root‘@‘%‘ to database ‘mysql‘

好吧,退出,关闭mysql,使用安全模式

# service mysqld stop
# mysqld_safe --user=mysql --skip-grant-tables --skip-networking &
# mysql -u root mysql
mysql> use mysql
Database changed
mysql> SELECT user,host,password FROM user;
+-------------+----------------+-------------------------------------------+
| user        | host           | password                                  |
+-------------+----------------+-------------------------------------------+
| root        | %              |                                           |
| root        | www.crwolf.com | *DF216F57F1F2066124E1AA5491D995C3CB57E4C2 |
+-------------+----------------+-------------------------------------------+

那我之前的用户去哪了?

有主机:127.0.0.1,用户:root,密码为空
主机:::1,用户:root,密码为空 
主机:localhost,用户为空,密码为空

这三个怎么给我自动删除了?

就像之前http24调用mysql的时候一样,我的root用户,密码为welcome,自动没了。

唉,删除匿名用户吧。这mysql怎么这么变幻无常呢。

mysql> drop user ‘root‘@‘%‘;    #错误又来了
ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement

mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)

mysql> drop user ‘root‘@‘%‘;        #好了
Query OK, 0 rows affected (0.00 sec)    

mysql> SELECT user,host,password FROM user;
+-------------+----------------+-------------------------------------------+
| user        | host           | password                                  |
+-------------+----------------+-------------------------------------------+
| root        | www.crwolf.com | *DF216F57F1F2066124E1AA5491D995C3CB57E4C2 |
+-------------+----------------+-------------------------------------------+
mysql> \q
Bye

问题还没解决

# service mysqld start
Starting MySQL                                             [确定]
# mysql -uroot -p        
Enter password: 
ERROR 1045 (28000): Access denied for user ‘root‘@‘localhost‘ (using password: YES)

再用一次安全模式

# service mysqld stop
# mysqld_safe --user=mysql --skip-grant-tables --skip-networking &
# mysql -u root mysql
mysql> delete from user where USER=‘‘;
Query OK, 0 rows affected (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)
mysql> \q
Bye
# service mysqld start
Starting MySQL                                             [确定]
# mysql -uroot -p
Enter password: 
ERROR 1045 (28000): Access denied for user ‘root‘@‘localhost‘ (using password: YES)
# mysqladmin -uroot -p password ‘welcome‘        #改密码都不能改,要哭了
Enter password: 
mysqladmin: connect to server at ‘localhost‘ failed
error: ‘Access denied for user ‘root‘@‘localhost‘ (using password: YES)‘

解决了,找了个高手帮忙
还是要进入安全模式

# service mysqld stop
# mysqld_safe  --user=mysql --skip-grant-table --skip-networking &

这边就先不动了,再新开一个终端

# mysql -uroot -pmysql
mysql> use mysql 
Database changed

因为之前登录mysql出错时不是总显示

ERROR 1045 (28000): Access denied for user ‘root‘@‘localhost‘ (using password: YES)

既然你显示,那就创建一个root用户,主机为localhost,密码为welcome

mysql> insert   user(host,user,password) VALUES (‘localhost‘,‘root‘,PASSWORD(‘welcome‘));
Query OK, 1 row affected, 3 warnings (0.00 sec)            #我这创建成功了
mysql> select user,host,password FROM user;        
+-------------+----------------+-------------------------------------------+
| user        | host           | password                                  |
+-------------+----------------+-------------------------------------------+
| root        |  | *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B |
| root        | localhost      | *DF216F57F1F2066124E1AA5491D995C3CB57E4C2 |
+-------------+----------------+-------------------------------------------+

如果这里显示错误的话

ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement

执行一下flush privileges,然后再创建

mysql> flush privileges;

然后再授权,一定要授权

mysql> GRANT all privileges  ON *.*  TO ‘root‘@‘localhost‘;
Query OK, 0 rows affected (0.00 sec)
mysql> flush privileges;

可以退出了
回到之前的终端

# service mysqld start
# mysql -uroot -pwelcome
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.5.36-log Source distribution
Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type ‘help;‘ or ‘\h‘ for help. Type ‘\c‘ to clear the current input statement.
mysql>

问题解决,我决定以后在mysql里面执行任何命令以后,都执行一下flush privileges这个命令,免得出错。反正每次执行命令后按两下向上的箭头,命令就出来了,也不耽误时间,还能避免出错。

时间: 2024-10-28 19:46:00

今天在昨天基础上进入mysql又出错的相关文章

高可用架构篇--MyCat在MySQL主从复制基础上实现读写分离

点击链接加入群[Dubbo技术交流2群]:https://jq.qq.com/?_wv=1027&k=46DcDFI 一.环境 操作系统:CentOS-6.6-x86_64-bin-DVD1.iso JDK版本:jdk1.7.0_45 MyCat版本:Mycat-server-1.4-release-20151019230038-linux.tar.gz MyCat节点IP:192.168.1.203      主机名:edu-mycat-01  主机配置:4核CPU.4G内存 MySQL版本:

python(十二)上:mysql安装使用详细教程

上节回顾: RabbitMQ几种模式: 平均分发 perfetch =1 durable队列持久化,deliver_mode = 2 消息持久化 一对多广播,exchanage fanout direct topic RPC 一.数据库介绍 1.什么是数据库? 数据库(Database)是按照数据结构来组织.存储和管理数据的仓库, 每个数据库都有一个或多个不同的API用于创建,访问,管理,搜索和复制所保存的数据. 现在我们使用关系型数据库管理系统(RDBMS)来存储和管理的大数据量.所谓的关系型

在CentOS7上搭建MySQL主从复制与读写分离

MySQL主从复制原理 MySQL的主从复制和MySQL的读写分离两者有着紧密联系,首先要部署主从复制,只有主从复制完成了,才能在此基础上进行数据的读写分离. (1)MySQL支持复制的类型. 1)基于语句的复制.MySQL默认采用基于语句的复制,效率比较高. 2)基于行的复制.把改变的内容复制过去,而不是把命令在从服务器上执行一遍. 3)混合类型的复制.默认采用基于语句的复制,一旦发现基于语句无法精确复制时,就会采用基于行的复制. (2)MySQL复制的工作过程如图所示.1)在每个事务更新数据

MySQL 是怎样运行的:从根儿上理解 MySQL:字符集和比较规则

本文章借鉴自https://juejin.im/book/5bffcbc9f265da614b11b731 字符集和比较规则简介 一些重要的字符集 ASCII字符集 共收录128个字符,包括空格.标点符号.数字.大小写字母和一些不可见字符.由于总共才128个字符,所以可以使用1个字节来进行编码,我们看一些字符的编码方式: 'L' -> 01001100(十六进制:0x4C,十进制:76) 'M' -> 01001101(十六进制:0x4D,十进制:77) ISO 8859-1字符集 共收录25

在CentOS上把MySQL从5.5升级到5.6(转)

http://www.th7.cn/db/mysql/201408/66064.shtml 在CentOS上把MySQL从5.5升级到5.6 摘要:本文记录了在CentOS 6.3上,把MySQL从5.5.28升级到5.6.19的过程. 1. 概述 在我做的一个项目中,最近我对生产服务器上的一系列系统软件进行了升级,包括git.nginx.MySQL和PHP.这篇文章讲的是升级MySQL的过程,其他软件的升级将在其他文章中介绍. 在我加入这个项目之前,网络服务器MySQL已经安装设置好了,我只是

在linux(CentOS-6.7_x86_64)上安装mysql成功记录

查看linux服务器的yum源设置: [root@hadoop03 yum.repos.d]# cd /etc/yum.repos.d [[email protected] yum.repos.d]# ll total 4 -rw-r--r--. 1 root root 564 Dec 27 11:27 CentOS-Media.repo [root@hadoop03 yum.repos.d]# vi CentOS-Media.repo # CentOS-Media.repo # # This

Ubuntu上安装MySql过程,以及遇到的一些问题

今天在Ubuntu服务器上安装MySql的时候遇到了一些问题,记录下来,以防以后忘记. 安装环境:Ubuntu14.04 安装命令: //安装Mysal服务端//会提示输入root密码 sudo apt-get install mysql-server //安装Mysql客户端 sudo apt-get install mysql-client sudo apt-get install libmysqlclient-dev 错误一描述: 远程连接MySql的时候出现错误:错误码2203 Can`

Linux 上从 MySQL 迁移到 MariaDB 的简单步骤

大家好!这是一篇介绍如何在服务器或个人电脑上从MySQL迁移到MariaDB的教程.也许你会问为什么我们要将数据库管理从MySQL迁移到MariaDB.往下看我们告诉你为什么这样做.为什么要用MariaDB来代替MySQLMariaDB是MySQL社区开发的分支,也是一个增强型的替代品.它由MySQL前开发者们带头组织的基金会开发,使用起来和MySQL完全一样.自从Oracle买下了MySQL,它就不再自由开源了,但是MariaDB仍然自由开源.一些如谷歌.维基.LinkedIn.Mozilla

远程登录阿里云上的MySQL

最近对云和服务器之类的感兴趣,想要将自己的数据什么的保存到远端服务器.研究了阿里云和百度云.今天算是有点进步吧. 我在阿里云上申请了个免费的云服务器(ECS),很可惜只能用5天.我也不太懂他的性能怎么样..反正能用吧.哈哈 上图吧. 1.主机终端管理:由于对Ubuntu 还算熟悉,我选了装ubuntu 的主机,在"更多操作"选项中,选择"连接终端",进入连接页面,按照提示输入"VNC"密码,就进入了主机系统,不过是命令行的终端 . 2.MySQL