`

MySQL(RPM格式)在Linux中安装

 
阅读更多

 

痛定思痛,终得成功 微笑

 

1 mysql  安装过程简述:

1 rpm 安装 server 和client
  目录:/usr/share/mysql/ 或者 /usr/lib/mysql/ 或者 /var/lib/mysql/
      通过 whereis mysql可以找到mysql所有安装目录 
2  创建组和 用户
3 chown 将安装目录给予 mysql用户 和组
4 初始化表 /usr/bin/mysql_install_db --user=mysql
5 service mysql start 启动mysql 
/usr/bin/mysqld_safe & 启动守护线程 
6 初始密码为空,修改root密码。 root 用户不能远程登录,需要重新创建远程用户并给予相应的权限。

 2 mysql详细安装步骤

   

一、官方网站下载mysql服务器
   地址:http://dev.mysql.com/downloads/mysql/#downloads
   镜像下载地址:http://mirrors.sohu.com/  
   官网有很多版本:
	1. MySQL Community Server 社区版本,开源免费,但不提供官方技术支持,通常自己测试用这个,根据不同操作系统下载相应版本即可。
	2. MySQL Enterprise Edition 企业版本,需付费,可以试用30天。
	3. MySQL Cluster 集群版,开源免费。可将几个MySQL Server封装成一个Server。
	4. MySQL Cluster CGE 高级集群版,需付费。
	5. MySQL Workbench(GUI TOOL)一款专为MySQL设计的ER/数据库建模工具。
二、rpm来安装
   首先查看是否安装了mysql rpm -qa | grep MySQL,如果存在的话用rpm命令卸载(rpm -e )  
   然后安装
	rpm -ivh MySQL-server-5.5.28-1.rhel5.i386.rpm
	rpm -ivh MySQL-client-5.5.28-1.rhel5.i386.rpm
三、 将mysql安装目录赋予权限chown
	/usr/share/mysql 
	 /var/lib/mysql/
	如:chown -R mysql:mysql /var/lib/mysql/
	    chown -R mysql:mysql /usr/share/mysql 
四、输入mysql命令提示错误 Can't connect to local MySQL server,是服务没有启动
   service mysql start
五、如果不能启动查看日志文件错误,my.cnf中有日志文件的配置位置
   可能异常:
   
    1)/usr/sbin/mysqld: File '/var/lib/mysql-bin.index' not found (Errcode: 13)
	错误13意思是没有权限,给/var/lib一个权限777 ,让mysql可以创建上面的文件,如果还是不能创建,可以自己手动创建
	chmod 777 /var/lib
    2) Can't open the mysql.plugin table. Please run mysql_upgrade to create 
	需要初始化表:命令:/usr/bin/mysql_install_db
    3)Fatal error: Can't open and lock privilege tables: Unknown collation '#46' in table 'host' definition
	低版本服务,用了高版本的表
	删掉数据库目录 
	rm -rf /var/lib/mysql/*
	重新初始化表:
	/usr/bin/mysql_install_db
六、执行启动命令service mysql start可以启动

 3 mysql配置过程: 

  

1 my.cnf 
	rpm包安装的Mysql不会自动安装/etc/my.cnf文件,需要自己到/usr/share/mysql目录中
拷贝my-huge.cnf或 my-medium.cnf或 my-small.cnf为my.cnf即可
在[mysqld]下面添加下面两个配置(如果运行时找不到log文件,可能是mysql用户没有创建文件的权限,则需要给权限):
	datadir=/var/lib/mysql
	log-bin=/var/lib/mysql-bin.log

2 设置密码
	首次安装时,默认密码为空,需要重新设置密码。
	命令:/usr/bin/mysqladmin -u root  password 新密码XXXXX 
	例如: /usr/bin/mysqladmin -u root password 123456
	登陆:mysql -u root –p新密码XXXXX 
3 安装目录说明:
   /usr/share/mysql(mysql.server命令及配置文件)
   /usr/bin(mysqladmin mysqldump等命令)
   /etc/rc.d/init.d/(启动脚本文件,mysql的目录)

4 数据库的启动与停止
  启动:MySQL安装完成后启动文件mysql在/etc/init.d目录下,在需要启动时运行下面命令即可
  启动:/etc/init.d/mysql start 或 /etc/rc.d/init.d/mysql start
  重启:/etc/init.d/mysql restart
  停止:/etc/init.d/mysql stop  或 /usr/bin/mysqladmin -u root -p shutdown

5  配置远程访问
处于安全考虑,Mysql默认是不允许远程访问的,可以使用下面开启远程访问
//赋予任何主机访问数据的权限
 mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'WITH GRANT OPTION 
 上面不好用则使用:GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION; 带有密码的。
//使修改生效
 mysql>FLUSH PRIVILEGES
   
6 客户端连接服务器的时候错误:解决root不能远程登录问题
错误:ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO) 
解决1:增加一个用户(有这个用户了 直接更新密码就行了),用户名为system,密码为manager。注意要使用PASSWORD函数,然后还要使用FLUSH,PRIVILEGES来执行确认。
 用root用户登陆后执行下面sql,然后刷新用新添加的用户登陆数据库即可。
 INSERT INTO mysql.user (Host,User,Password) VALUES ('%','system', PASSWORD('manager')); //有些版本不能用,因为有其他的字段不能为空
 可以: CREATE USER 'system'@'%' IDENTIFIED BY "123";   system为用户名  123为密码  %表示任何ip地址能都使用该用户访问数据库
 
 mysql> FLUSH PRIVILEGES 

给system用户赋予所有操作权限,否则用户什么也做不了:
grant all privileges on *.* to system@'%'  identified by '密码'; flush privileges

 方法2步骤:解决root用户不能本地登录问题
# /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' and host='root' or host='localhost';//把空的用户密码都修改成非空的密码就行了。
mysql> FLUSH PRIVILEGES;
mysql> quit
# /etc/init.d/mysqld restart
# mysql -uroot -p
Enter password: <输入新设的密码newpassword> 

 4 乱码问题 :通过程序追加到数据库中的数据时乱码 

   解决:1 ) 修改程序编码为utf-8      2) 修改数据库连接为utf-8     3) 修改数据库、表、表中字段编码为utf-8 

            jdbc:mysql://localhost/mytest?useUnicode=true&characterEncoding=utf-8

     

 5   数据库的导出

   

1、导出数据库为test下面表名为b的数据
mysqldump -uroot -h 127.0.0.1  test b > b_test.sql
2、导出数据库为test的所有数据
mysqldump -uroot -h 127.0.0.1 test >test.sql
3、导出数据库名为test和retail的数据库
mysqldump -uroot -h 127.0.0.1  -B test retail > /data/db.sql
4、导出所有的数据库
mysqldump -uroot -h127.0.0.1 -A > /data/all.sql
5、导出数据库的结构(以上脚本添加选项 -d)
mysqldump -uroot -h 127.0.0.1  test b  -d> b_test.sql  
6、从一个机器的v3_content数据库导入到另一个机器得v3_content数据库
 从192.168.0.231机器得test_content数据库导入到192.168.0.102机器得test_content数据库
mysqldump  -h192.168.0.231 -uroot -p123456  test_content| mysql -h192.168.0.102 -usystem -p123456 test_content
7 从content(带有查询条件) 中只导出表app_book_repack 中的数据 (-t换成-d则只导出数据库的表结构,都不加则结构和数据都有mysqldump -uroot -p  --default-character-set=utf8 -t  content app_book_repack --where="s_state=1" > /opt/app_book_repack.sql
导入 mysql> source /opt/app_book_repack.sql

 

6  显示正在执行或者等待中的SQL   

     SHOW   PROCESSLIST     

     EXPLAIN  SELECT  *  FROM  t_reg_code   分析表的执行计划

 7 今天遇到数据库source时候不动了,df 看了一下,原来是服务器空间没有了。

 

   

  

 

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics