MySQL 安装 (不需root权限的安装方法)

在一台服务器上安装多个Mysql,每个帐号可以有,也可以没有。而且一个帐号可以安装多个Mysql。但帐号没有root权限,不能使用软件包来安装(需要root权限)

方法:

  1. http://www.mysql.com/downloads/mysql/5.1.html#downloads上面下载Mysql5.1版本 (高于5.1的版本需要别的工具来安装,不建议,因为大多数host不会预先安装上的)
  2. 进入mysql-version目录下
  3. ./configure --prefix=$HOME/usr/local/mysql    (prefix选项是指你要安装到的路径)//主要就是这个选项:其他可以暂时不管,这个选项可以保证能正常启动了(configure中可能出现一个con't rm 某文件的的提示,不用管)
  4. make
  5. make install (过程中会出现一小段停顿,be patient!)
  6. 到这步,就已经完成了Mysql安装的第一部分。接着
  7. 一般来说,如果我们是第一个安装Mysql的用户,我们可以在/etc/my.cnf下配置Mysql。但是,因为目前服务器上已经有多个Mysql实例了,而且,我们没有root权限,因此,我们只能在自己目录下配置my.cnf。将mysql提供给我们的经典配置文件拷贝到自己的目录下,运行命令:
  8. cd $HOME/usr/local/mysql/
    cp share/mysql/my-huge.cnf my.cnf
  9. 修改my.cnf文件。一般来说,我们要修改端口号和socket【Socket是Mysql服务器用来与外来程序交互的socket文件,每一个Mysql服务器只能有一个】
    修改的范例如下:
    [client]
    port            = 7780
    socket          = /home/liaoqiqi/tmp/mysql.sock (sock文件和server的sock是一个文件,这个mysql.sock应该是mysql的主机和客户机在同一host上的时候,使用unix domain socket做为通讯协议的载体,它比tcp快。好像是个管道文件,这里端口号一样没问题,因为本机通讯走的是管道,不知道具体怎么实现的,但可以另外指定)
    [mysqld]
    port            = 7780
    socket          = /home/liaoqiqi/tmp/mysql.sock
  10. Mysql有两种连接方式:
    (1),TCP/IP
    (2),socket
    对mysql.sock来说,其作用是程序与mysqlserver处于同一台机器,发起本地连接时可用。
    例如你无须定义连接host的具体IP得,只要为空或localhost就可以。
    在此种情况下,即使你改变mysql的外部port也是一样可能正常连接。
    因为你在my.ini中或my.cnf中改变端口后,mysql.sock是随每一次 mysql server启动生成的。已经根据你在更改完my.cnf后重启mysql时重新生成了一次,信息已跟着变更。
    socket文件是unix下进程间通信用的,mysql.sock就是客户端连接与mysql间通信用的socket文件,只能本机使用,远程连接要通过tcp/ip了

  11. basedir=/安装的路径/mysql 
    datadir=/安装的路径/mysql/var 

  12. 在上面的两步操作中,我们已经配置好了我们自己的Mysql的配置文件,包括它的端口号和Socket。下面,我们来安装本地数据库。
  13. 安装Mysql默认的本地数据库及表格
    cd $HOME/usr/local/mysql/bin
    ./mysql_install_db --defaults-file=~/usr/local/mysql/my.cnf //需要安装数据库,否则启动server会失败,因为server要读取数据库中内容,注--user 选项指定Server的启动者,所有文件系统的文件属于该用户(注:和Mysql的数据库权限不同,两个机制是独立的,--defaults-file参数要放到所有参数之前,否则可能会报错)
  14. 安装了数据库默认的一些表后,现在,我们可以启动Mysql服务了:
    cd $HOME/usr/local/mysql/
    nohup ./mysqld_safe  --defaults-file=~/usr/local/mysql/my.cnf & 少了连个选项:可以添加在:--log-error,--pid-file=分别指定系统运行日志(非事务日志)和进程号文件(在my.cnf中的[mysqld_safe]的块中加,defaults-file必须通过命令行指定,不能写到配置文件里),注,log-err不指定文件的话为.err(可以读取该文件看到底哪里有问题),--pid-file要预先创建?两个选项也可以添加在my.cnf中吗?
  15. 在成功启动Mysql服务后,我们可以用Mysql客户端来连接它了。但是,我们要先初始化密码。
    $HOME/usr/local/mysql/bin/mysqladmin –uroot  password 123456 //否则数据库中没有root 用户,也没有人拥有权限) -uroot=-u root
    然后,我们可以用客户端来连接它了:
    $HOME/usr/local/mysql/bin/mysql -P 7780 –uroot  -p
  16. 接着,我们可以新建一个用户,并为他授予权限。如:
    create user dnweb identified by '123456'
    grant all privileges on *.* TO 'dnweb'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION; "%"号 要在引号内。
    flush privileges;
  17. 停止Mysql服务的方法:
    mysqladmin -uroot -p shutdown -S /home/liaoqiqi/tmp/mysql.sock

进阶阅读:为Mysql提供扩展,安装Python-Mysql:

  • 请安装MySQL-python-1.2.3.tar.gz
  • 将它配置在Linux环境中:
    修改~/.bash_profile文件,将$HOME/usr/local/mysql/lib/mysql/添加到 $LD_LIBRARY_PATH 环境变量中。
    source ~/.bash_profile

Reference

  1. 请问如何查看mysql 的端口号? mysql> show variables like'port'
  2. 可能的错误:_mysql_exceptions.OperationalError: (2002, "Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)")
  3. 可能的错误:[ERROR] Fatal error: Can't open and lock privilege tables: Table 'mysql.host' doesn't exist
  4. 可能的错误:error while loading shared libraries: libmysqlclient.so.15: cannot open shared object file: No such file or directory.
  5. 关闭mysql服务的正确方法 
    ./mysqladmin -uroot -p shutdown
  6. 查看mysql所对应的socket的位置:netstat -ln | grep mysql
  7. 官方的Mysql客户端连服务器端出错问题解析 5.4.7. Causes of Access-Denied Errors 

转载请注明: 转载自Knight.Liao's Tale
本文链接地址: 非root权限安装Mysql



发布了29 篇原创文章 · 获赞 4 · 访问量 9万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章