--MySQL登录汇总
--------------------2014/5/17

1. ERROR 1045错误

ERROR 1045 (28000): Access denied for user 'jack'@'localhost' (using password: YES)
排除密码错误,mysql出现这样的错误可以这样解决:  1. 以root用户登录 
2. use mysql; 
3. select c.user,c.host,c.password from user c 
4. 看到 jack用户的host上是否是"%"与'localhost'都有密码设置。
    如果是%,只能远程登录 ,不能用localhost登录 
    如果是'localhost'只能本机登录,不能远程登录 
    有时候我们就是只给了%权限,没有给localhost权限。
5. 使用下面语句重新赋予权限。
    grant all privileges on *.* to 'jack'@'%' [ identified by 'newpwd' ] [ with grant option ];
    grant all privileges on *.* to 'jack'@'localhost' [identified by 'newpwd' ] [ with grant option ]; 
6. 最后flush privileges;
 

二. mysql 只允许本地登录(tcp/ip or sock)
今天弄了下mysql的几个安全设置: 只允许本地登录,允许ssh通过远程登录

1.my.cnf
#skip-networking
bind-address = 127.0.0.1
此项设置允许 tcp/ip 访问,但是只有127.0.0.1 有可以访问,如果把skip-networking 开启。则只能通过sock连接。
顺便提下,
mysql -h localhost -u eric -p saker
mysql -h 127.0.0.1 -u eric -p saker
 
这两个命令在skip-networking 开启的时候localhost能正常登录mysql,但是127.0.0.1不能。具体原因如下:
 
大多数程序将主机名localhost和IP地址127.0.0.1 视作“本地服务器”的同义词。
 
但在UNIX系统中,MySQL 有所不同:
出现localhost时,MySQL会尝试使用一个Unix domain socket 文件来连接本地服务器。
要强制使用TCP/IP连接到本地服务器,那就使用IP地址 127.0.0.1 而不是主机名localhost。
可以通过指定 --protocol=tcp 选项来强制使用TCP/IP进行连接
TCP/IP 连接的默认端口号是 3306.
2.mysql 设置好了,只允许本地登录。但是允许通过ssh远程登录
原理:无论是windows还是 linux,第一步就是本地与mysql服务器建立一个ssl tunnel,
利用ssh命令在本机开个33xx的端口,这个端口为隧道的入口端口,出口就是数据库的3306(如果默认端口没被修改的话),
linux如下:
ssh -NCPf root@localaddress -L 3388:mysqlserver:3306

参数解释

-C    使用压缩功能,是可选的,加快速度。 
-P    用一个非特权端口进行出去的连接。 
-f    一旦SSH完成认证并建立port forwarding,则转入后台运行。 
-N    不执行远程命令。该参数在只打开转发端口时很有用(V2版本SSH支持)

1)如果是windows 下用navicat for mysql 之类的数据库管理软件,比较简单,
在"常规"选项卡填写主机名为localhost或127.0.0.1,远程数据库的账号和密码
"SSH"选项卡填写远程服务器的主机名和ssh端口号,及登录的用户和密码,测试连接是否成功
2)windows 暂时没找出类似
ssh -NCPf root@localaddress -L 3388:mysqlserver:3306
命令安静模式下建立ssh tunnel。 我用了putty试了下。连接可以成功。呆后续研究

3.mysql 主从备份使用ssh tunnel,下面摘自别人文章。
1). 备份初始数据。关闭所有相关的数据更新操作程序,或者对要备份的数据库加锁,避免更新,然后用 tar 备份到从服务器上。或者可以用mysqlhotcopy。2). 需要在主服务器上,配置日志功能这需要重启服务,使其启用日志功能。配置文件 my.cnf 可以放在 mysql 的安装目录中。
[mysqld]
server-id=1
log-bin=mydb-bin
binlog-do-db=mydb 重启服务后,可以在数据目录下,看见该数据库的日志文件,并且可以通过 "show master status",查看到主服务器的状态。3). 设置备用用户mysql>GRANT REPLICATION SLAVE ON *.* TO backup@'localhost' IDENTIFIED BY 'backup';这里之所以用本地连接,是因为后面采用 ssh 隧道连接 mysql4). 设置从服务器[mysqld]
server-id=2
master-host=127.0.0.1
master-port=3307
master-user=backup
master-password=backup
master-connect-retry=10
report-host=127.0.0.1 5). 远程连接隧道ssh -f -N -4 -L 3307:127.0.0.1:3306 mysqlm@remotemysql 6). 启动从服务器可以通过 "show processlist",查看备份情况。并且可以查看mysql的错误日志,了解是否连接正常,同步备份功能是否工作正常。
 
三. mysql socket连接比tcp连接方式更快 mysql有两种连接方式,常用的一般是tcp 
  1. mysql -h(ip) -uroot -pxxx #常用的
  2. mysql -S /tmp/mysqld.sock
 mysql 采用unix socket连接方式,比用tcp的方式更快,但只适用于mysql和应用同在一台PC上。如果不在同一台pc上,就没有办法连接了。而且我们可以把socket文件放在/dev/shm (内存)。/etc/mysql/my.cnf里面应该可以看到sock的配置条目,如果你跟我一样,是debian linux,注意要修改/etc/mysql/my.cnf和/etc/mysql/debian.cnf里面的配置。
  1. socket  = /dev/shm/mysqld.sock
 
以下是来自mysql官方手册的一段话:
http://dev.mysql.com/doc/refman/5.1/en/can-not-connect-to-server.html
http://dev.mysql.com/doc/refman/5.5/en/can-not-connect-to-server.html
A MySQL client on Unix can connect to the mysqld server in two different ways: By using a Unix socket file to connect through a file in the file system (default /tmp/mysql.sock), or by using TCP/IP, which connects through a port number. A Unix socket file connection is faster than TCP/IP, but can be used only when connecting to a server on the same computer. A Unix socket file is used if you don’t specify a host name or if you specify the special host name loc -alhost.
 
 
 

最新文章

  1. ubuntu14.04禁用自动待机保持屏幕亮度
  2. nodejs的实现原理和搭建服务器(动态)
  3. 原生JS获取元素集合的子元素宽度
  4. Ubuntu实现wifi热点
  5. Gulp解决发布线上文件(CSS和JS)缓存问题
  6. JAVA线程池的创建
  7. 502 Bad Gateway什么意思
  8. Mybatis批量插入oracle,mysql
  9. Oracle权限一览表
  10. SQL用replace替换文本部分内容
  11. 用Excel完成专业化数据统计、分析工作
  12. EasyUI选项卡tab页面处理示例
  13. Chrome新的语言API,让您的浏览器说话
  14. 最短路径之BF算法+线性规划(图片格式)
  15. JDK 中的设计模式应用实例
  16. Java设计模式小议之1------- 迭代器模式
  17. Emacs Org-mode 1 下载、安装、基本使用
  18. 【转】typedef和#define的用法与区别
  19. grep基础用法
  20. Python十分适合用来开发网页爬虫

热门文章

  1. Handlebars.js 模板引擎
  2. 2017寒假零基础学习Python系列之函数之 编写函数
  3. PostgreSQL 使用 PreparedStatement 导致查询慢的分析
  4. vue.js 组件之间传递数据
  5. Chrome浏览器扩展开发系列之九:Chrome浏览器的chrome.alarms.* API
  6. Linux - iostat命令详解
  7. Java基础语法<三> 输入输出
  8. 在Linux上创建Postgresql数据库
  9. Codeforces Round #424 (Div. 2, rated, based on VK Cup Finals)A B题
  10. 阅读MDN文档之布局(四)