一.使用工具putty_V0.63.0.0.43510830.exe连接linux
http://download.csdn.net/detail/u012255016/9781901
Linux服务器输入用户和密码:
二.检查是否安装过mysql数据库,有则先卸载
1.检查是否安装mysql组件
2.先关闭mysql服务
3.查找mysql相应文件夹
4.卸载删除mysql组件
5.删除mysql相应文件夹
[root@DB-Server init.d]# find / -name mysql
/var/lib/mysql
/var/lib/mysql/mysql
/usr/lib64/mysql
[root@DB-Server init.d]# rm -rf /var/lib/mysql
[root@DB-Server init.d]# rm -rf /var/lib/mysql/mysql
[root@DB-Server init.d]# rm -rf /usr/lib64/mysql
[root@DB-Server init.d]#
三.使用yum安装mysql
1.输入 yum list | grep mysql 命令来查看yum上提供的mysql数据库可下载的版本
2. yum install -y mysql-server mysql mysql-devel 命令mysql,yum会帮我们选择好安装mysql数据库所需要的软件以及其它附属的一些软件
四.mysql首次启动,密码设置,开机自动启动等
上面是第一次打开设置密码,以后可以使用:
用UPDATE直接编辑user表
首先登录MySQL。
mysql> use mysql;
mysql> update user set password=password('123') where user='root' and host='localhost';
mysql> flush privileges;
开机自动启动mysql:
五.查看mysql版本、初始库、用户等
六.设置mysql允许远程连接
GRANT ALL PRIVILEGES ON *.* TO root@'%' IDENTIFIED BY '密码' WITH GRANT OPTION;
注:root登录用户名,%通配符,表示所有ip可以连接,红线位置是登录mysql密码
七.查看是否设置成功,查看端口
八.设置linux防火墙端口
编辑完成后,按 :wq或:q退出编辑,一个是保存退出,一个退出不保存。
九.重启防火墙
service iptables status 查看防火墙状态
service iptables start 开启防火墙
service iptables stop 关闭防火墙
service iptables restart 重启防火墙
十.使用工具Navicat操作mysql
有些linux是需要ssh先连接的
问题汇总:
1.输入yum list|grep mysql 报错:Cannot find a valid baseurl for repo: base。
解决:vi /etc/resolv.conf 输入:8.8.8.8或8.8.4.4
问题状况:最近由于服务器变换了网段,导致IP地址变换,变化后使用MySQL客户端连接mysql服务器和在客户端中打开表的速度非常慢(无论表的大小),甚至连接超时,但是直接登录到服务器在本地连接MySQL,速度则正常。
问题原因:MySQL数据库收到一个网络连接后,首先拿到对方的IP地址,然后对这个IP地址进行反向DNS解析从而得到这个IP地址对应的主机名。用主机名在权限系统里面进行权限判断。反向DNS解析是耗费时间的,有可能让用户感觉起来很慢。甚至有的时候,反向解析出来的主机名并没有指向这个IP地址,这时候就无法连接成功了。
解决方案:
为了避免这个反查过程,可以在MySQL的配置文件my.cnf的[mysqld]项下追加以下配置:
vi /etc/my.cnf
[mysqld]
skip-name-resolve
MySQL在Linux下采用 rpm方式安装后默认是:数据库名与表名\表的别名\变量名是严格区分大小写
修改大小写的方法:
1,用root帐号登录,在/etc/my.cnf 或 /etc/myql/my.cnf中的[mysqld]后添加lower_case_table_names=1
操作命令: vi /etc/my.cnf
复制代码代码示例:
[root@localhost ~]# vi /etc/my.cnf
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
# Default to using old password format for compatibility with mysql 3.x
# clients (those using the mysqlclient10 compatibility package).
old_passwords=1
lower_case_table_names=1
# Disabling symbolic-links is recommended to prevent assorted security risks;
# to do so, uncomment this line:
# symbolic-links=0
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
备注:添加lower_case_table_names=1,表示mysql不区分大小写,这段代码必须在[mysqld_safe]之前。
2,重启MySQL服务
操作命令:
复制代码代码示例:
/etc/init.d/mysql restart
或者
service mysqld restart
3,设置成功,则不再区分表名的大小写。
注意:
如果在/etc或/etc/mysql找不到my.cnf的话,需要从/usr/share/mysql/下找到*.cnf文件,拷贝其中一个到/etc/并改名为my.cnf,然后放到/etc/下面去。
操作命令:
复制代码代码示例:
cp /usr/share/mysql/my-*.cnf /etc/my.cnf
mysql有四个my-*.cnf文件:
my-small.cnf是为了小型数据库而设计的。
my-medium.cnf是为中等规模的数据库而设计的。
my-large.cnf是为专用于一个SQL数据库的计算机而设计的。
my-huge.cnf是为企业中的数据库而设计的。
备注:
MySQL在Windows下不区分大小写,如果在my.ini中mysqld部分加入lower_case_table_names=0的话,则导入导出时会对大小写有区别。
详解mysql如何配置远程链接,解决各种连接问题
在服务器上面我们经常需要去使用mysql,有些童鞋刚刚配置好了服务器,想在本地的一些图形化软件去连接mysql得到更直观的表格显示,此时很可能不允许连接,为了探究为什么连接失败,在这里我会对mysql里的mysql数据库的user表进行分析,相信看完之后,大致的权限以及主机的连接问题,都会迎刃而解
1.问题分析
基本每个mysql都会有名为mysql的数据库,里面存放的是mysql的核心东西,其中user表里面就有mysql连接的用户信息,里面的字段有如下
1.Host (允许连接的主机,%代表全部主机可以连接)
2.User (连接的用户名)
3.password (连接的密码,密码用mysql自带的password函数加密)
4.Select_priv (是否允许查询,Y表示允许,N表示拒绝)
5.Alter_priv (是否允许插入数据,Y表示允许,N表示拒绝)
剩下都是一堆权限,和Select_priv的设置一样,其实组合起来就很容易理解了,处在host地址的用户User可以通过密码password访问数据库对应的权限。
举个粟子:例如有以下记录(省略部分权限字段)
+------+-------------------------------------------+--------------+-------------+
| user | password | Host | Select_priv |
+------+-------------------------------------------+--------------+-------------+
| root | *B16BCB720468FF0ED1F0A3A179FFDC66F044CC5C | localhost | Y |
ip地址在localhost的用户root可以通过password函数加密之后密码*B16BCB720468FF0ED1..为访问数据库,并可以使用Select_priv权限 。
相信看到这里你已经明白了为什么,怎么不能连接mysql呢?其实就是你的条件没有符合user表里的记录,只要符合 用户名(user),密码(password),主机地址(Host),你就能访问数据库,至于权限,那就得看后面对应的字段。
至于多条记录之间同一个用户是取交集还是取最新一条,我还没测试过,我出问题的时候查询数据库是有以下记录。
+------+-------------------------------------------+--------------+-------------+
| user | password | Host | Select_priv |
+------+-------------------------------------------+--------------+-------------+
| root | *B16BCB720468FF0ED1F0A3A179FFDC66F044CC5C | % | Y |
| root | | localhost | N|
那时候远程访问需要密码,但是可以全部权限可以访问,但是在本地用命令行mysql -uroot -p密码 连数据库输了密码就错,一狠心不输入密码,居然可以了,但是什么权限都没有。一查数据库看到上面的数据顿时知道出什么事了...
最后一条记录localhost限制了访问权限,之后我一样在本地访问,但是指定了一下ip地址,让mysql认为我是127.0.0.1,就可以访问全部权限了...
2.解决问题
相信看到很多人就知道怎么做了,如果要远程访问数据库,只需要把拥有全部权限的root账号对应的记录的Host字段改为%就可以了。在我这里数据库显示是这样子(忽略若干权限...一般root账户如果后面Select_priv为Y,其他一般都全为Y)。
mysql> select user,Host,password,Select_priv from user;
+------+--------------+-------------------------------------------+-------------+
| user | Host | password | Select_priv |
+------+--------------+-------------------------------------------+-------------+
| root | localhost | *B16BCB720468FF0ED1F0A3A179FFDC66F044CC5C | Y |
| root | iz289q95684z | | Y |
| root | 127.0.0.1 | | Y |
| root | ::1 | | Y |
| | localhost | | N |
| | iz289q95684z | | N |
+------+--------------+-------------------------------------------+-------------+
只要把第一条记录改为的Host改为%就好了
以下是命令:
update user set Host = '%' where Host = 'localhost' & user = 'root';
flush privileges;
以上第一条命令为修改允许访问的主机地址
第二条命令为刷新权限
只要执行上面的两条命令就能远程访问服务器。当然啦,具体情况具体分析,可能你本地的数据库记录和我的不同,那么你只需要按着上面的介绍去调整就好了,最后别忘了执行flush privileges刷新一下。
3.特殊情况
如果你还是没有解决问题,远程连接还是连接不上,那么很有可能是你的mysql配置文件绑定了本地,你可以找到本地的mysql配置文件去进行修改,mysql配置文件叫my.cnf,如果找不到路径可以用locate my.cnf去查找,在我这里就是/etc/mysql/my.cnf。在里面你会看到一系列的mysql配置信息,找到里面的bind-address,这个就是万恶之源。把他注释掉(在前面加#)再重启mysql就OK了。
bind-address = 0.0.0.0 //或者配置成这个 表示任意地址均可以连接
万恶的mysql,终于看到连接成功页面了。。。