linux下按装mysql

一. 使用工具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



2.MySQL连接缓慢,打开缓慢原因

问题状况:最近由于服务器变换了网段,导致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了。

     万恶的mysql,终于看到连接成功页面了。。。



猜你喜欢

转载自blog.csdn.net/worn_xiao/article/details/80371566