Mysql 远程访问SQLSTATE[28000][1045] Access denied for user 'root'@'localhost'

遇到这个问题2天多了,很是头疼,先是无法建数据库,就是用的默认test,为了赶紧能演示,后test无法远程访问,于是我的demo很悲剧的用的截图。

 之后一阵查,发现确实是权限问题,一点点解决了,首先是解决无法创建数据库的问题:

Mysql 远程访问SQLSTATE[28000][1045] Access denied for user 'root'@'localhost'(use Password No)

解决方法:

# /etc/init.d/mysql stop
# mysqld_safe --user=mysql --skip-grant-tables --skip-networking &
# mysql -u root mysql
mysql> UPDATE user SET Password=PASSWORD('newpassword') where USER='root';
mysql> FLUSH PRIVILEGES;
mysql> quit

# /etc/init.d/mysql restart
# mysql -uroot -p
Enter password: <输入新设的密码newpassword>

网上找的答案,我的是非root安装的,mysql服务是mysql.server.用root进去就解决了建库问题,接下来是远程访问的问题:

Mysql 远程访问SQLSTATE[28000][1045] Access denied for user 'root'@'localhost'(use Password Yes)

mysql>grant all on *.* to user_name@'%' identified by 'use_password'

mysql>FLUSH PRIVILEGES;

就可以了。只是还有问题,就是使用linux下插入的中文到了windows下的Navicat查看总是乱码,反之不是,很是奇怪,都是utf8编码的。


转自:http://blog.csdn.net/ashelyhss/article/details/7839268



GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'youpassword' WITH GRANT OPTION;

grant all on depot_development.* to 'david'@'localhost' identified by 'lovelove';

 

要开启远程连接的权限才行,比如grant   all   on   *.*   on   remote@'你的ip或%'   identified   by   'pass' WITH   GRANT   OPTION;  
  这样就开了一个名为remote密码为pass的远程用户,他可以对所有的数据库和表上有所有的权限。

 

 

 写道
mysql> use mysql;
mysql> INSERT INTO user
-> VALUES('%','root',PASSWORD('some_pass'),
-> 'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');
 

 

 

你需要编辑mysql配置文件my.cnf. 

通常状况,my.cnf放置于在以下目录: 

 写道
/etc/mysql/my.cnf (Debian linux)
/etc/my.cnf (Red Hat Linux/Fedora Linux)
/var/db/mysql/my.cnf (FreeBSD)

 

# vi /etc/my.cnf 
然后用vi编辑my.cnf,修改内容从以下行: 

[mysqld] 

你所需要: 
1. 确保skip-networking被删除或者屏蔽,否则不支持TCP/IP 访问 
2. 增加行bind-address = 65.55.55.2,替代65.55.55.2 为你的服务器地址 
修改后,配置为: 

Mysql代码   收藏代码
  1. [mysqld]   
  2. user = mysql   
  3. pid-file = /var/run/mysqld/mysqld.pid   
  4. socket = /var/run/mysqld/mysqld.sock   
  5. port = 3306   
  6. basedir = /usr   
  7. datadir = /var/lib/mysql   
  8. tmpdir = /tmp   
  9. language = /usr/share/mysql/English   
  10. bind-address = 65.55.55.2   
  11. # skip-networking   
  12. ....   
  13. ..   

 

保存并关闭配置文件 
重启mysql服务器:# /etc/init.d/mysql restart 

 

Mysql代码   收藏代码
  1. mysql -h172.21.5.29 -uadmin -padmin   

   即可了
//172.21.5.29
就是MySQL ServerIP地址,admin admin就是刚才在 172.21.5.29上设置的远程访问帐户

 

 

 

1.新建用户。 
//登录MYSQL 
@>mysql -u root -p 
@>密码 
//创建用户 
mysql> mysql> insert into mysql.user(Host,User,Password,ssl_cipher,x509_issuer,x509_sub 
ject) values("localhost","pppadmin",password("passwd"),'','',''); 
这样就创建了一个名为:phplamp 密码为:1234 的用户。 
然后登录一下。 
mysql>exit; 
@>mysql -u phplamp -p 
@>输入密码 
mysql>登录成功 
2.为用户授权。 
//登录MYSQL(有ROOT权限)。我里我以ROOT身份登录. 
@>mysql -u root -p 
@>密码 
//首先为用户创建一个数据库(phplampDB) 
mysql>create database phplampDB; 
//授权phplamp用户拥有phplamp数据库的所有权限。 
>grant all privileges on phplampDB.* to phplamp@localhost identified by '1234'; 
//刷新系统权限表 
mysql>flush privileges; 
mysql>其它操作 
/* 
如果想指定部分权限给一用户,可以这样来写: 
mysql>grant select,update on phplampDB.* to phplamp@localhost identified by '1234'; 
//刷新系统权限表。 
mysql>flush privileges; 
*/ 
3.删除用户。 
@>mysql -u root -p 
@>密码 
mysql>Delete FROM user Where User="phplamp" and Host="localhost"; 
mysql>flush privileges; 
//删除用户的数据库 
mysql>drop database phplampDB; 
4.修改指定用户密码。 
@>mysql -u root -p 
@>密码 
mysql>update mysql.user set password=password('新密码') where User="phplamp" and Host="localhost"; 
mysql>flush privileges; 
5.列出所有数据库 
mysql>show database; 
6.切换数据库 
mysql>use '数据库名'; 
7.列出所有表 
mysql>show tables; 
8.显示数据表结构 
mysql>describe 表名; 
9.删除数据库和数据表 
mysql>drop database 数据库名; 
mysql>drop table 数据表名;

转自:http://hlee.iteye.com/blog/289798

你可能感兴趣的:(linux,mysql)