出现原因:
当初在centos上面安装mysql的时候,设置了免密码登录,详情参考这篇文章【MySQL】在CentOS7环境下----手把手教你安装MySQL详细教程(附带图例详解!!)。当时是为了图省事,设置完了之后确实给我带来了便利,但是由于学校数据库实验要求,不得已需要退出这个模式,故出此教程。
解决方案:
1.在命令行中通过日志文件查看初始密码
sudo cat /var/log/mysqld.log | grep password
2.输入以下指令重新进入当时设置免密码登录的地方,把skip-grant-tables语句删掉,然后退出。
vim /etc/my.cnf
3.重新进入mysql并尝试创建用户
mysql -u root -p
Enter password:(这里输入刚刚看到的初始密码)
(成功进入mysql)
create user 'user1'@'localhost' identified by '新密码';
这个时候会发现,还是出现ERROR1290,不要着急,下面我们可以参考这篇文章的方法重置密码
ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot exe
下面按照文章中写的,先执行命令关闭数据库只读属性
mysql> set global read_only=0;
Query OK, 0 rows affected (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.17 sec)
mysql> show variables like '%read_only%';
+-----------------------+-------+
| Variable_name | Value |
+-----------------------+-------+
| innodb_read_only | OFF |
| read_only | OFF |
| super_read_only | OFF |
| transaction_read_only | OFF |
| tx_read_only | OFF |
+-----------------------+-------+
5 rows in set (0.02 sec)
然后再将难以记忆的初始密码设置成任意你喜欢的密码,并且可以进行创建数据库用户操作了
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '你喜欢的密码';
Query OK, 0 rows affected (0.00 sec)
mysql> create user 'user1'@'localhost' identified by '1234';
Query OK, 0 rows affected (0.00 sec)
感谢上述两篇文章的作者,希望能帮到大家。