標籤:
最近由於工作的需要,要在centos上安裝MYSQL伺服器。作為一名小兵中的小兵,當然是沒有root許可權的,為了能夠使用mysql,只能使用源碼安裝了(因為binary安裝方式似乎需要root access的)
一、Mysql下載
mysql.5.6.24
二、解壓
tar zxvf mysql.tar.gz
三、配置
參考了許多地方,最後稀裡糊塗進行了一下配置,關鍵是安裝的位置,資料庫的位置,設定檔的位置這三個吧
cmake ./ -DCMAKE_INSTALL_PREFIX=$HOME/local/mysql \
-DMYSQL_DATADIR=$HOMElocal/mysql/data \
-DSYSCONFDIR=$HOME/etc \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_MEMORY_STORAGE_ENGINE=1 \
-DWITH_READLINE=1 \
-DMYSQL_UNIX_ADDR=$HOME/local/tmp/mysqld.sock \
-DMYSQL_TCP_PORT=8812 \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DEXTRA_CHARSETS=all \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci
四、安裝
make && make install
五、安裝資料庫
這裡實際上剛開始一致不太成功,原因是mysql一直去找一個寫預設的位置,當然是沒有寫的許可權的,最後在[1]得到了非常大的啟發。
實際上,為了屏蔽掉這些預設的設定我們只需要找一個設定檔作為這些命令的輸入就可以了
./scripts/mysql_install_db --defaults-file=~/my.cnf --user=martin --basedir=$HOME --datadir=/home/martin/sql_data --socket=/home/martin/socket
上面的參數value要具體改為我們自己的value
上面的那個my.cnf檔案非常關鍵,我們最好考一個安裝成功之後再一定的目錄下面
## The MySQL database server configuration file.## You can copy this to one of:# - "/etc/mysql/my.cnf" to set global options,# - "~/.my.cnf" to set user-specific options.# # One can use all long options that the program supports.# Run program with --help to get a list of available options and with# --print-defaults to see which it would actually understand and use.## For explanations see# http://dev.mysql.com/doc/mysql/en/server-system-variables.html# This will be passed to all mysql clients# It has been reported that passwords should be enclosed with ticks/quotes# escpecially if they contain "#" chars...# Remember to edit /etc/mysql/debian.cnf when changing the socket location.[client]port = 3666socket = /home/guofeng/local/etc/mysql/mysqld.sock# Here is entries for some specific programs# The following values assume you have at least 32M ram# This was formally known as [safe_mysqld]. Both versions are currently parsed.[mysqld_safe]socket = /home/guofeng/local/etc/mysql/mysqld.socknice = 0[mysqld]## * Basic Settings#user = guofengpid-file = /home/guofeng/local/etc/mysql/mysql.pidsocket = /home/guofeng/local/etc/mysql/mysqld.sockport = 3666basedir = /home/guofeng/local/mysqldatadir = /home/guofeng/local/etc/mysql/datadirtmpdir = /home/guofeng/local/etc/mysql/tmplc-messages-dir = /home/guofeng/local/etc/mysql/skip-external-locking## Instead of skip-networking the default is now to listen only on# localhost which is more compatible and is not less secure.bind-address = 127.0.0.1## * Fine Tuning#key_buffer = 16Mmax_allowed_packet = 16Mthread_stack = 192Kthread_cache_size = 8# This replaces the startup script and checks MyISAM tables if needed# the first time they are touchedmyisam-recover = BACKUP#max_connections = 100#table_cache = 64#thread_concurrency = 10## * Query Cache Configuration#query_cache_limit = 1Mquery_cache_size = 16M## * Logging and Replication## Both location gets rotated by the cronjob.# Be aware that this log type is a performance killer.# As of 5.1 you can enable the log at runtime!general_log_file = /home/guofeng/local/etc/mysql/datadir/mysql.loggeneral_log = 1## Error log - should be very few entries.#log_error = /home/guofeng/local/etc/mysql/datadir/log.err## Here you can see queries with especially long duration#log_slow_queries = /var/log/mysql/mysql-slow.log#long_query_time = 2#log-queries-not-using-indexes## The following can be used as easy to replay backup logs or for replication.# note: if you are setting up a replication slave, see README.Debian about# other settings you may need to change.#server-id = 1#log_bin = /var/log/mysql/mysql-bin.logexpire_logs_days = 10max_binlog_size = 100M#binlog_do_db = include_database_name#binlog_ignore_db = include_database_name## * InnoDB## InnoDB is enabled by default with a 10MB datafile in /var/lib/mysql/.# Read the manual for more InnoDB related options. There are many!## * Security Features## Read the manual, too, if you want chroot!# chroot = /var/lib/mysql/## For generating SSL certificates I recommend the OpenSSL GUI "tinyca".## ssl-ca=/etc/mysql/cacert.pem# ssl-cert=/etc/mysql/server-cert.pem# ssl-key=/etc/mysql/server-key.pem[mysqldump]quickquote-namesmax_allowed_packet = 16M[mysql]#no-auto-rehash # faster start of mysql but no tab completition[isamchk]key_buffer = 16M## * IMPORTANT: Additional settings that can override those from this file!# The files must end with ‘.cnf‘, otherwise they‘ll be ignored.#
六、啟動
./mysqld_safe --defaults-file=/home/guofeng/local/etc/mysql/my.cnf --skip-grant-tables&
ps -ef | grep mysql
七、進入資料庫
mysql -u root -p
隨便輸入一個密碼
進去之後建立一個新的使用者[2]
建立使用者,授權.Sql代碼create user lzquan identified by ‘123456‘; grant all privileges on *.* to ‘lzquan‘@‘localhost‘ identified by ‘123456‘; flush privileges;Sql代碼 刪除使用者,收回許可權Sql代碼delete from mysql.user where user=‘lzquan‘ and host=‘localhost‘; revoke all on testuser .* from ‘lzquan‘@localhost;
[1] http://superuser.com/questions/209203/how-can-i-install-mysql-on-centos-without-being-root-su
[2] http://blog.knowsky.com/223198.htm
A very cool thing: Install MYSQL from source without root access on LINUX