A very cool thing: Install MYSQL from source without root access on LINUX

2015-08-29 19:33:47   来源:   评论: 点击:

最近由于工作的需要,要在centos上安装MYSQL服务器。作为一名小兵中的小兵,当然是没有root权限

最近由于工作的需要,要在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

相关热词搜索:

上一篇:linq to sql 输出SQL语句 下一篇:用户和认证 权限总结
分享到: 收藏