遇到这个问题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配置文件my.cnf.
通常状况,my.cnf放置于在以下目录:
# 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服务器:# /etc/init.d/mysql restart
即可了
//172.21.5.29就是MySQL Server的IP地址,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