打开mysql数据库,show databases; 如果只有二个表:information和test。可以判断出登陆的用户权限不够。show status;可以看到目前数据库状态。
USE mysql; SHOW TABLES;中有一个user表,可往其中添加用户,create user ''@'localhost' identified by '';,如:
可以知道插入的密码是明文,必须对这个用户赋权限,使用GRANT语句,grant all on *.* to ''@'localhost'; 同时要FLUSH PRIVILEGES;才能使插入用户成功。这样就不会出现上面的错误了。
Mysql create user:
1.mysql>CREATE USER 'user1'@'localhost' IDENTIFIED BY 'pass1';
2.mysql>GRANT SELECT,INSERT,UPDATE,DELETE ON *.* TO 'user1'@'localhost'; 或者:mysql>GRANT ALL ON *.* TO 'user1'@'localhost';或者:mysql>GRANT ALL ON *.* TO 'user1'@'localhost' IDENTIFIED BY 'pass1';
3.mysql>INSERT INTO user (Host,User,Password,Select_priv,Insert_priv)
VALUES('localhost','user4',PASSWORD('pass3'),'Y','Y');
mysql中应该分辨127.0.0.1与localhost的区别:
1. mysql -h 127.0.0.1 的时候,使用TCP/IP连接,
mysql server 认为该连接来自于127.0.0.1或者是"localhost.localdomain"
2. mysql -h localhost 的时候,是不使用TCP/IP连接的,而使用Unix socket;
此时,mysql server则认为该client是来自"localhost"
在mysql授权的时候还是用127.0.0.1比较合适。
更改密码:
方法1: 用SET PASSWORD命令
mysql -u root
mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('newpass');
方法2:用mysqladmin
mysqladmin -u root password "newpass"
如果root已经设置过密码,采用如下方法
mysqladmin -u root password oldpass "newpass"
方法3: 用UPDATE直接编辑user表
mysql -u root
mysql> use mysql;
mysql> UPDATE user SET Password = PASSWORD('newpass') WHERE user = 'root';
mysql> FLUSH PRIVILEGES;
在丢失root密码的时候,可以这样
mysqld_safe --skip-grant-tables&
mysql -u root mysql
mysql> UPDATE user SET password=PASSWORD("new password") WHERE user='root';
mysql> FLUSH PRIVILEGES;