Ubuntu上 安装 mysql 过程很简单(参考博客), 但在Fedora 上就很不好处理,主要是“安装完”后Mysql用不了。出现"ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)" 的错误
以下是本人的安装过程,可能过于详细
[root@localhost local]# rpm -qa mysql mysql-5.0.88-1.fc10.i386 [root@localhost local]#
无法进行调用 mysql的api,故源码安装。
删掉系统以前的mysql文件:
[root@localhost kamailio-3.2.3]# rpm -e mysql
-rwxr-xr-x 1 root root 287844 2009-11-25 01:59 /usr/bin/mysql -rwxr-xr-x 1 root root 110776 2009-11-25 01:59 /usr/bin/mysqlaccess -rwxr-xr-x 1 root root 34676 2009-11-25 01:59 /usr/bin/mysqladmin -rwxr-xr-x 1 root root 113816 2009-11-25 01:59 /usr/bin/mysqlbinlog -rwxr-xr-x 1 root root 5428 2009-11-25 01:59 /usr/bin/mysqlbug -rwxr-xr-x 1 root root 26840 2009-11-25 01:59 /usr/bin/mysqlcheck -rwxr-xr-x 1 root root 5432 2009-11-25 01:59 /usr/bin/mysql_config -rwxr-xr-x 1 root root 3670 2009-11-25 01:59 /usr/bin/mysql_convert_table_format -rwxr-xr-x 1 root root 23056 2009-11-25 01:59 /usr/bin/mysqld_multi -rwxr-xr-x 1 root root 13559 2009-11-25 01:59 /usr/bin/mysqld_safe -rwxr-xr-x 1 root root 71012 2009-11-25 01:59 /usr/bin/mysqldump -rwxr-xr-x 1 root root 6356 2009-11-25 01:59 /usr/bin/mysqldumpslow -rwxr-xr-x 1 root root 11648 2009-11-25 01:59 /usr/bin/mysql_explain_log -rwxr-xr-x 1 root root 3245 2009-11-25 01:59 /usr/bin/mysql_find_rows -rwxr-xr-x 1 root root 483 2009-11-25 01:59 /usr/bin/mysql_fix_extensions -rwxr-xr-x 1 root root 5834 2009-11-25 01:59 /usr/bin/mysql_fix_privilege_tables -rwxr-xr-x 1 root root 31485 2009-11-25 01:59 /usr/bin/mysqlhotcopy -rwxr-xr-x 1 root root 22720 2009-11-25 01:59 /usr/bin/mysqlimport -rwxr-xr-x 1 root root 13659 2009-11-25 01:59 /usr/bin/mysql_install_db -rwxr-xr-x 1 root root 6586 2009-11-25 01:59 /usr/bin/mysql_secure_installation -rwxr-xr-x 1 root root 16687 2009-11-25 01:59 /usr/bin/mysql_setpermission -rwxr-xr-x 1 root root 24436 2009-11-25 01:59 /usr/bin/mysqlshow -rwxr-xr-x 1 root root 14473 2009-11-25 01:59 /usr/bin/mysql_tableinfo -rwxr-xr-x 1 root root 152308 2009-11-25 01:59 /usr/bin/mysqltest -rwxr-xr-x 1 root root 38252 2009-11-25 01:59 /usr/bin/mysqltestmanager -rwxr-xr-x 1 root root 11956 2009-11-25 01:59 /usr/bin/mysqltestmanagerc -rwxr-xr-x 1 root root 10720 2009-11-25 01:59 /usr/bin/mysqltestmanager-pwgen -rwxr-xr-x 1 root root 1287788 2009-11-25 01:59 /usr/bin/mysql_tzinfo_to_sql -rwxr-xr-x 1 root root 52684 2009-11-25 01:59 /usr/bin/mysql_upgrade -rwxr-xr-x 1 root root 5753 2009-11-25 01:59 /usr/bin/mysql_upgrade_shell -rwxr-xr-x 1 root root 109092 2009-11-25 01:59 /usr/bin/mysql_waitpid -rwxr-xr-x 1 root root 3818 2009-11-25 01:59 /usr/bin/mysql_zap
[root@localhost kamailio-3.2.3]# ls /usr/bin/mysql* ls: cannot access /usr/bin/mysql*: No such file or directo [root@localhost kamailio-3.2.3]#
地址:http://www.mysql.com/downloads/mysql/#downloads 选择的platform为source code,我安装时的最新版本是mysql-5.5.24.tar.gz(需要注册, 这里可以免注册下载);
[zhang@localhost Code]# tar zxvf mysql-5.5.24.tar.gz [zhang@localhost Code]# cd mysql-5.5.24
[zhang@localhost mysql-5.5.24]# vim INSTALL-SOURCE 4443 2.9.2. Installing MySQL from a Standard Source Distribution 4459 In MySQL 5.5, CMake is used as the build framework on all 4460 platforms. The instructions given here should enable you to 4461 produce a working installation. For additional information on 4462 using CMake to build MySQL, see http://forge.mysql.com/wiki/CMake.
这里有安装示例,就按此安装咯。
4478 and compile the distribution. For example, with a compressed tar 4479 file source distribution on Unix, the basic installation command 4480 sequence looks like this: 4481 # Preconfiguration setup 4482 shell> groupadd mysql 4483 shell> useradd -r -g mysql mysql 4484 # Beginning of source-build specific instructions 4485 shell> tar zxvf mysql-VERSION.tar.gz 4486 shell> cd mysql-VERSION 4487 shell> cmake . 4488 shell> make 4489 shell> make install 4490 # End of source-build specific instructions 4491 # Postinstallation setup 4492 shell> cd /usr/local/mysql 4493 shell> chown -R mysql . 4494 shell> chgrp -R mysql . 4495 shell> scripts/mysql_install_db --user=mysql 4496 shell> chown -R root . 4497 shell> chown -R mysql data 4498 # Next command is optional 4499 shell> cp support-files/my-medium.cnf /etc/my.cnf 4500 shell> bin/mysqld_safe --user=mysql & 4501 # Next command is optional 4502 shell> cp support-files/mysql.server /etc/init.d/mysql.server 4503
编译、安装:
[root@localhost mysql-5.5.24]# cmake . [root@localhost mysql-5.5.24]# make
[ 0%] Generating common.h [ 0%] Generating help.c [ 1%] Generating help.h [ 1%] Generating vi.h [ 1%] Generating emacs.h [ 1%] Generating fcns.c [ 1%] Generating fcns.h
[ 29%] Built target comp_err Scanning dependencies of target GenError [ 29%] Generating ../include/mysqld_error.h, ../sql/share/english/errmsg.sys [ 29%] Built target GenError Scanning dependencies of target federated [ 30%] Building CXX object storage/federated/CMakeFiles/federated.dir/ha_federate
[ 71%] Built target mysqlclient Scanning dependencies of target symlink_libmysqlclient_r.a [ 71%] Generating libmysqlclient_r.a [ 71%] Built target symlink_libmysqlclient_r.a Scanning dependencies of target symlink_libmysqlclient_r.so [ 71%] Generating libmysqlclient_r.so [ 71%] Built target symlink_libmysqlclient_r.so Scanning dependencies of target symlink_libmysqlclient_r.so.18 [ 71%] Generating libmysqlclient_r.so.18 [ 71%] Built target symlink_libmysqlclient_r.so.18 Scanning dependencies of target symlink_libmysqlclient_r.so.18.0.0 [ 71%] Generating libmysqlclient_r.so.18.0.0 [ 71%] Built target symlink_libmysqlclient_r.so.18.0.0
[zhang@localhost mysql-5.5.24]$ ls ./include ./libmysql ./libmysqld ./libservices ./include: atomic m_ctype.h my_dir.h mysql_com.h my_uctype.h sslopt-case.h base64.h m_string.h my_getopt.h mysqld_ername.h my_user.h sslopt-longopts.h CMakeFiles my_aes.h my_global.h mysqld_error.h my_xml.h sslopt-vars.h cmake_install.cmake my_alarm.h myisam.h mysql_embed.h password.h t_ctype.h CMakeLists.txt my_alloc.h myisammrg.h mysql.h probes_mysql.d.base thr_alarm.h config.h my_atomic.h myisampack.h mysql.h.pp probes_mysql.h thr_lock.h decimal.h my_attribute.h my_libwrap.h mysql_time.h probes_mysql_nodtrace.h typelib.h errmsg.h my_base.h my_list.h mysql_version.h queues.h violite.h ft_global.h my_bit.h my_md5.h mysql_version.h.in rijndael.h welcome_copyright_notice.h hash.h my_bitmap.h my_net.h my_stacktrace.h service_versions.h heap.h my_compare.h my_nosys.h mysys_err.h sha1.h keycache.h my_compiler.h my_pthread.h my_sys.h sha2.h lf.h my_config.h my_rdtsc.h my_time.h sql_common.h Makefile my_dbug.h mysql my_tree.h sql_state.h ./libmysql: authentication_win conf_to_src.c libmysqlclient.a libmysqlclient.so libmysql.ver.in client_settings.h errmsg.c libmysqlclient_r.a libmysqlclient.so.18 Makefile CMakeFiles get_password.c libmysqlclient_r.so libmysqlclient.so.18.0.0 merge_archives_mysqlclient.cmake cmake_install.cmake libclientlib.a libmysqlclient_r.so.18 libmysql.def mysqlclient_depends.c CMakeLists.txt libmysql.c libmysqlclient_r.so.18.0.0 libmysql_exports_file.cc ./libmysqld: CMakeLists.txt embedded_priv.h emb_qcache.cc emb_qcache.h examples libmysqld.c libmysqld.def libmysqld.rc lib_sql.cc resource.h ./libservices: CMakeFiles CMakeLists.txt HOWTO Makefile my_thread_scheduler_service.c thd_wait_service.c cmake_install.cmake CTestTestfile.cmake libmysqlservices.a my_snprintf_service.c thd_alloc_service.c
[root@localhost mysql-5.5.24]# make install
[root@localhost mysql]# cd /usr/local/mysql [root@localhost mysql]# ll total 76 drwxr-xr-x 2 root root 4096 2012-05-26 13:22 bin -rw-r--r-- 1 root root 17987 2012-04-19 19:01 COPYING drwxr-xr-x 4 root root 4096 2012-05-26 13:21 data drwxr-xr-x 2 root root 4096 2012-05-26 13:21 docs drwxr-xr-x 3 root root 4096 2012-05-26 13:21 include -rw-r--r-- 1 root root 7604 2012-04-19 19:01 INSTALL-BINARY drwxr-xr-x 3 root root 4096 2012-05-26 13:21 lib drwxr-xr-x 4 root root 4096 2012-05-26 13:22 man drwxr-xr-x 10 root root 4096 2012-05-26 13:22 mysql-test -rw-r--r-- 1 root root 2552 2012-04-19 19:01 README drwxr-xr-x 2 root root 4096 2012-05-26 13:22 scripts drwxr-xr-x 27 root root 4096 2012-05-26 13:22 share drwxr-xr-x 4 root root 4096 2012-05-26 13:22 sql-bench drwxr-xr-x 2 root root 4096 2012-05-26 13:22 support-files [root@localhost mysql]#
将mysql的路径添加到PATH变量中去:
修改profile文件
vi /etc/profile
if ! echo $PATH | /bin/egrep -q "(^|: )$1($|: )" ; then if [ "$2" = "after" ] ; then PATH=$PATH: $1:/usr/local/mysql/bin else PATH=$1: $PATH:/usr/local/mysql/bin或者在 /etc/profile文件最后添加如下两行:
PATH=$PATH:/usr/local/mysql/bin export PATH执行下面的命令使所做的更改生效:
[root@localhost mysql]# /etc/profile bash: /etc/profile: Permission denied [root@localhost mysql]# ll /etc/profile -rw-r--r-- 1 root root 1067 2012-05-27 01:12 /etc/profile [root@localhost mysql]# PATH=$PATH:/usr/local/mysql/bin [root@localhost mysql]# export PATH
安装貌似完成了!
然而由于这样或那样的原因,mysql总是不能正常运行,例如:[root@localhost mysql]# ./bin/mysql -u root mysql ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) [root@localhost mysql]# [root@localhost mysql]# ps -aux | grep mysql Warning: bad syntax, perhaps a bogus '-'? See /usr/share/doc/procps-3.2.7/FAQ zhang 6330 0.0 0.0 4212 704 pts/1 S+ 23:46 0:00 grep mysql [root@localhost mysql]#
[root@localhost mysql]# scripts/mysql_install_db --user=mysql 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 PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER ! To do so, start the server, then issue the following commands: ./bin/mysqladmin -u root password 'new-password' ./bin/mysqladmin -u root -h localhost.localdomain password 'new-password' Alternatively you can run: ./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 . ; ./bin/mysqld_safe & You can test the MySQL daemon with mysql-test-run.pl cd ./mysql-test ; perl mysql-test-run.pl Please report any problems with the ./bin/mysqlbug script!
[root@localhost mysql]# [root@localhost mysql]# chown -R mysql . [root@localhost mysql]# chgrp -R mysql . [root@localhost mysql]# scripts/mysql_install_db --user=mysql [root@localhost mysql]# chown -R root . [root@localhost mysql]# chown -R mysql data [root@localhost mysql]# cp support-files/my-medium.cnf /etc/my.cnf [root@localhost mysql]# cp support-files/mysql.server /etc/init.d/mysql.server [root@localhost mysql]# bin/mysqld_safe --user=mysql & [root@localhost mysql]#
[root@localhost mysql]# ./bin/mysqld_safe & [1] 7085 [root@localhost mysql]# 120529 23:52:25 mysqld_safe Logging to '/usr/local/mysql/data/localhost.localdomain.err'. 120529 23:52:25 mysqld_safe Starting mysqld daemon with databases from /usr/local/mysql/data
查看log信息:
[root@localhost mysql]# vim data/localhost.localdomain.err 120529 23:46:20 mysqld_safe mysqld from pid file /usr/local/mysql/data/localhost.localdomain.pid ended 120529 23:52:25 mysqld_safe Starting mysqld daemon with databases from /usr/local/mysql/data 120529 23:52:25 InnoDB: The InnoDB memory heap is disabled 120529 23:52:25 InnoDB: Mutexes and rw_locks use InnoDB's own implementation 120529 23:52:25 InnoDB: Compressed tables use zlib 1.2.3 120529 23:52:25 InnoDB: Initializing buffer pool, size = 128.0M 120529 23:52:25 InnoDB: Completed initialization of buffer pool 120529 23:52:25 InnoDB: highest supported file format is Barracuda. InnoDB: Log scan progressed past the checkpoint lsn 48941 120529 23:52:25 InnoDB: Database was not shut down normally! InnoDB: Starting crash recovery. InnoDB: Reading tablespace information from the .ibd files... InnoDB: Restoring possible half-written data pages from the doublewrite InnoDB: buffer... InnoDB: Doing recovery: scanned up to log sequence number 1595675 120529 23:52:25 InnoDB: Starting an apply batch of log records to the database... InnoDB: Progress in percents: 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 InnoDB: Apply batch completed 120529 23:52:25 InnoDB: 1.1.8 started; log sequence number 1595675 120529 23:52:25 [Note] Server hostname (bind-address): '(null)'; port: 3306 120529 23:52:25 [Note] - '(null)' resolves to '0.0.0.0'; 120529 23:52:25 [Note] - '(null)' resolves to '::'; 120529 23:52:25 [Note] Server socket created on IP: '0.0.0.0'. 120529 23:52:25 [Note] Event Scheduler: Loaded 0 events 120529 23:52:25 [Note] /usr/local/mysql/bin/mysqld: ready for connections. Version: '5.5.24-log' socket: '/tmp/mysql.sock' port: 3306 Source distribution
[root@localhost mysql]# ps -aux | grep mysql Warning: bad syntax, perhaps a bogus '-'? See /usr/share/doc/procps-3.2.7/FAQ root 7085 0.0 0.1 4812 1224 pts/1 S May29 0:00 /bin/sh ./bin/mysqld_safe mysql 7312 0.0 3.9 327252 40876 pts/1 Sl May29 0:00 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=/usr/local/mysql/data/localhost.localdomain.err --pid-file=/usr/local/mysql/data/localhost.localdomain.pid --socket=/tmp/mysql.sock --port=3306 zhang 8659 0.0 0.0 4212 708 pts/2 S+ 00:30 0:00 grep mysql [root@localhost mysql]# [root@localhost mysql]# /etc/init.d/mysql.server restart Shutting down MySQL. [ OK ] Starting MySQL. [ OK ] [root@localhost mysql]# [root@localhost mysql]#
[root@localhost mysql]# ./bin/mysqladmin -u root password mypassword [root@localhost mysql]# ./bin/mysqladmin -u root -h localhost.localdomain password mypassword ./bin/mysqladmin: connect to server at 'localhost.localdomain' failed error: 'Access denied for user 'root'@'localhost' (using password: NO)' [root@localhost mysql]#
[root@localhost mysql]# mysql -u root -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 3 Server version: 5.5.24-log Source distribution Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> exit Bye [root@localhost mysql]#
//TODO