fedora11 下 mysql 源码安装过程

来源:互联网 发布:linux 启动tomcat命令 编辑:程序博客网 时间:2024/06/05 18:40

环境:
  fedora11 , mysql5.1.34源码安装:
  
  装了一天半一直没有成功,后来放弃了,因为fedora11的源下不到mysql所以只能放弃在fedora11下的安装,转而改到unbuntu9.04上安装,但是想想问题是没有
解决的,今天又转移到fedora下搞,发现不是安装mysql难,是应为自己对linux系统不熟悉,很多东西都不明白,所以没有装成功。
  mysql源码包安装过程采用./configure make makeinstall
  由于安装不上,所以我采用默认路径装,担心又会出差错,推荐的安装过程是:
  $tar xzf mysql-5.1.34.tar.gz【这个过程是在debian上的,在fedora和ubuntu及其它linux系统上也一样】
    $cd mysql-5.1.34/
    $./configure  --enable-local-infile  --with-charset=utf8  --with-extra-charsets=all  --with-plugins=all  --with-big-tables
    $make
    $sudo make install$tar xzf mysql-5.1.34.tar.gz
    $cd mysql-5.1.34/
    $./configure  --enable-local-infile  --with-charset=utf8  --with-extra-charsets=all  --with-plugins=all  --with-big-tables
    $make
    $sudo make install

 当安装完成后,进入/usr/local/bin运行如下程序:(该程序显示结果的说明见所在行)
 [root@localhost bin]# ./mysql_install_db 
Installing MySQL system tables...
OK
Filling help tables...
OK

To start mysqld at boot time you have to copy
support-files/mysql.server to the right place for your system【注释:你需要将源码包目录下的mysql.server拷贝到linux启动目录下,对于fedora11拷贝到得目录是/etc/init.d/并更改其名字为mysqld,注意如果是更改了系统默认
安装路径需要打开该文件,按照该文件中提示的内容修改。否则可能不成功。之后修改权限
chmod +x /etc/init.d/mysqld
安装脚本后,用来激活它以便在系统启动时运行所需要的命令取决于你的操作系统。在Linux中,你可以使用chkconfig:
 chkconfig --list mysql
mysql 服务支持 chkconfig,但它在任何级别中都没有被引用(运行“chkconfig --add mysql”)
 chkconfig --add mysql
再用list查看:
mysql 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭

PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER !
To do so, start the server, then issue the following commands:

/usr/local/bin/mysqladmin -u root password 'new-password'[添加root用户并修改密码,这块也一直出错,错误是:
 
[root@localhost mysql-test]# mysqladmin -u root -h localhost.localdomain password 'aihua'
mysqladmin: connect to server at 'localhost.localdomain' failed
error: 'Access denied for user 'root'@'localhost' (using password: NO)'

问题出在客户端所需的

mysql.sock

并不在/tmp目录下,实验了多种方法都不成功,后来修改/etc/my.cnf,添加了如下二句:

[client]   
socket=/var/lib/mysql/mysql.sock //与mysqld的socket设置是一样的!!
]
/usr/local/bin/mysqladmin -u root -h localhost.localdomain password 'new-password'

Alternatively you can run:
/usr/local/bin/mysql_secure_installation

which will also give you the option of removing the test
databases and anonymous user created by default.  This is
strongly recommended for production servers.

See the manual for more instructions.

You can start the MySQL daemon with:
cd /usr/local ; /usr/local/bin/mysqld_safe &

You can test the MySQL daemon with mysql-test-run.pl
cd /usr/local/mysql-test ; perl mysql-test-run.pl

Please report any problems with the /usr/local/bin/mysqlbug script!

The latest information about MySQL is available at http://www.mysql.com/
Support MySQL by buying support/licenses from http://shop.mysql.com/

 安装完成后启动mysqld:service mysqld start
启动客户端:
[root@localhost mysql]# mysql -u root -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or /g.
Your MySQL connection id is 2
Server version: 5.1.34 Source distribution

Type 'help;' or '/h' for help. Type '/c' to clear the current input statement.

mysql> 
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema | 
| mysql              | 
| test               | 
+--------------------+
3 rows in set (0.01 sec)

mysql> quit

成功!!!
现在添加一些资料:

Can't   connect   to   local   MySQL   server   through   socket   '/var/lib/mysql/mysql.sock'(2)";  
   
  是你的mysql.sock   文件不存在了,  
  可能是被你不小心删除了,  
   
  连接localhost通常通过一个Unix域套接字文件进行,一般是/tmp/mysql.sock。如果套接字文件被删除了,本地客户就不能连接。这可能发生在你的系统运行一个cron任务删除了/tmp下的临时文件。  
   
  如果你因为丢失套接字文件而不能连接,你可以简单地通过重启服务器重新创建得到它。因为服务器在启动时重新创建它。  
  另一个解决办法是你现在不能用套接字建立连接因为它不见了,你可以建立一个TCP/IP连接,例如,如果服务器主机是192.168.0.1,你可以这样连接:  
   
  %mysql   -u   root   -h   192.168.0.1   -p  
  %mysqladmin   -u   root   -h   192.168.0.1   -p   shutdown  
   
  如果套接字文件被一个cron任务删除,问题将重复出现,除非你修改cron任务或使用一个或使用一个不同的套接字文件,你可以使用全局选项文件指定一个不同的套接字,例如,如果数据目录是/usr/local/var,你可以通过将下列行加入/etc/my.cnf中,将套接字文件移到那里:  
   
  [mysqld]  
  socket=/usr/local/var/mysql.sock  
  [client]  
  socket=/usr/local/var/mysql.sock  
  对服务器和客户均指定路径名,使得它们都使用同一个套接字文件。如果你只为服务器设置路径,客户程序将仍然期望在原位置执行套接字,在修改后重启服务器,使它在新位置创建套接字  
   
   
  =============================================  
  怎样保护“/tmp/mysql.sock   ”不被删除  
   
  如果你有这个问题,事实上任何人可以删除MySQL通讯套接字“/tmp/mysql.sock”,在Unix的大多数版本上,你能通过为其设置sticky(t)位来保护你的“/tmp”文件系统。作为root登录并且做下列事情:  
   
  shell>   chmod   +t   /tmp  
   
  这将保护你的“/tmp”文件系统使得文件仅能由他们的所有者或超级用户(root)删除。  
   
  你能执行ls   -ld   /tmp检查sticky位是否被设置,如果最后一位许可位是t,该位被设置了。  
  =============================================  
   
  一个MySQL客户可以两种不同的方式连接mysqld服务器:Unix套接字,它通过在文件系统中的一个文件(缺省“/tmp/mysqld.sock”)进行连接;或TCP/IP,它通过一个端口号连接。Unix套接字比TCP/IP更快,但是只有用在连接同一台计算机上的服务器。如果你不指定主机名或如果你指定特殊的主机名localhost,使用Unix套接字。  
   
  错误(2002)Can't   connect   to   ...通常意味着没有一个MySQL服务器运行在系统上或当试图连接mysqld服务器时,你正在使用一个错误的套接字文件或TCP/IP端口。    
   
  由检查(使用ps)在你的服务器上有一个名为mysqld的进程启动!如果没有任何mysqld过程,你应该启动一个。  
   
  如果一个mysqld过程正在运行,你可以通过尝试这些不同的连接来检查服务器(当然,端口号和套接字路径名可能在你的安装中是不同的):  
   
  shell>   mysqladmin   version  
  shell>   mysqladmin   variables  
  shell>   mysqladmin   -h   `hostname`   version   variables  
  shell>   mysqladmin   -h   `hostname`   --port=3306   version  
  shell>   mysqladmin   -h   'ip   for   your   host'   version  
  shell>   mysqladmin   --socket=/tmp/mysql.sock   version  
  注意hostname命令使用反引号“`”而非正引号“'”;这些导致hostname输出(即,当前主机名)被代替进mysqladmin命令中。  
   
  这是可能造成Can't   connect   to   local   MySQL   server错误的一些原因:    
   
  mysqld不在运行。    
  你正在使用MIT-pthreads的一个系统上运行。如果正在运行在一个没有原生线程的系统上,mysqld使用   MIT-pthreads   软件包。然而,MIT-pthreads不支持Unix套接字,因此当与服务器连接时,在这样一个系统上,你总是必须明确地指定主机名。试试使用这个命令检查到服务器的连接:  
  shell>   mysqladmin   -h   `hostname`   version  
  某人删除了mysqld使用的Unix套接字(缺省“/tmp/mysqld.sock”)。你可能有一个cron任务删除了MySQL套接字(例如,一个把旧文件从“/tmp”目录中删除的任务)。你总是可以运行mysqladmin   version并且检查mysqladmin正在试图使用的套接字确实存在。在这种情况下,修复方法是删除cron任务而不删除“mysqld.sock   或将套接字放在其他地方。你能用这个命令在MySQL配置时指定一个不同的套接字地点:  
  shell>   ./configure   --with-unix-socket-path=/path/to/socket  
  你也可以使用--socket=/path/to/socket选项启动safe_mysqld和在启动你的MySQL客户前设置环境变量MYSQL_UNIX_PORT为套接字路径名。你可用--socket=/path/to/socket选项启动mysqld服务器。如果你改变了服务器的套接字路径名,你也必须通知MySQL客户关于新路径的情况。你可以通过设置环境变量MYSQL_UNIX_PORT为套接字路径名或由提供套接字路径名作为客户的参数做到。你可用这个命令测试套接字:  
   
  shell>   mysqladmin   --socket=/path/to/socket   version  
  你正在使用   Linux和线程已经死了(核心倾倒了)。在这种情况中,你必须杀死其它mysqld线程(例如在启动一个新的MySQL服务器之前,可以用mysql_zap脚本)。见18.1   如果MySQL总是崩溃怎么办。    
  如果你得到错误Can't   connect   to   MySQL   server   on   some_hostname,你可以尝试下列步骤找出问题是什么:    
   
  通过执行telnet   your-host-name   tcp-ip-port-number并且按几次回车来检查服务器是否正常运行。如果有一个MySQL运行在这个端口上,你应该得到一个包含正在运行的MySQL服务器的版本号的应答。如果你得到类似于telnet:   Unable   to   connect   to   remote   host:   Connection   refused的一个错误,那么没有服务器在使用的端口上运行。    
  尝试连接本地机器上的mysqld守护进程,并用mysqladmin   variables检查mysqld被配置使用的TCP/IP端口(变量port)。    
  检查你的mysqld服务器没有用--skip-networking选项启动。    
   
   
  不要使用   mysql   -h   'localhost'来连接mysql服务器,这样的语句只能在同一台机子上运行,用mysql   -h   127.0.0.1   这样的语句来连接服务器。  
  


原创粉丝点击