非 root 下安装 MySQL 5.6

Posted 夏天的技术博客

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了非 root 下安装 MySQL 5.6相关的知识,希望对你有一定的参考价值。

假设你的home目录为/home/work

mysql-server 安装

  1. 下载mysql.tar.gz
wget http://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.17.tar.gz
  1. 下载cmake [5.5及以上的版本需要用cmake进行安装]

cmake 官网下载 http://cmake.org/cmake/resources/software.html

wget http://www.cmake.org/files/v2.8/cmake-2.8.12.2-Linux-i386.tar.gz

解压

tar -zxvf cmake-2.8.12.2-Linux-i386.tar.gz

无需编译 直接使用 cmake-2.8.12.2-Linux-i386/bin/cmake

  1. 安装mysql
1) tar -zxvf mysql-5.6.17.tar.gz 
2) cd mysql-5.6.17
3) /home/work/cmake-2.8.12.2-Linux-i386/bin/cmake  -DCMAKE_INSTALL_PREFIX=/home/work/local/mysql -DMYSQL_DATADIR=/home/work/local/mysql/data -DDEFAULT_CHARSET=utf8  -DDEFAULT_COLLATION=utf8_general_ci -DMYSQL_UNIX_ADDR=/home/work/tmp/mysqld.sock -DWITH_INNOBASE_STORAGE_ENGINE=1

注意: 路径尽量使用绝对路径。

4) make ; make install
  1. 启动
/home/work/local/mysql/scripts/mysql_install_db  --user=work --basedir=/home/work/local/mysql --datadir=/home/work/local/mysql/data --no-defaults

运行mysql_install_db以后会有相应的启动提示 按照提示结合日志即可启动,也可以按照我下面写的方法。

/home/work/local/mysql/scripts/mysql_install_db --defaults-file=/home/work/local/mysql/my.cnf --datadir=/home/work/local/mysql/data/ --basedir=/home/work/local/mysql/

touch /home/work/tmp/mysqld.sock 注意: 这个文件是你在cmake编译时候写的 -DMYSQL_UNIX_ADDR=/home/work/tmp/mysqld.sock

另外如果 3306已经被其他mysql 占用 则要修改 /home/work/local/mysql/my.cnf 的port为 其他端口

/home/work/local/mysql/bin/mysqld_safe  --defaults-file=/home/work/local/mysql/my.cnf &  [注意这里要指定my.cnf否则会使用默认的/etc/my.cnf]
/home/work/local/mysql/bin/mysqladmin -u root password '123456'
  1. 使用 /home/work/local/mysql/bin/mysql -uroot -p123456 使用

1) 如果报错 ERROR 2013 (HY000): Lost connection to MySQL server at ‘reading initial communication packet’, system error: 111

可能是你使用了其他端口 需要在链接的时候指定端口 /home/work/local/mysql/bin/mysql -uroot -p123456 -P3307

2)如果报错,没有权限ERROR 1045 (28000): Access denied for user ‘root’@’localhost’ (using password: YES)

那么是你需要添加该用户 或者 是为这个用户授权

关于授权

默认是有一个 root@localhos的账户, 一般我们是为了支持其他机器访问的话需要加 root@%的账户和 root@本机名称的账户.

步骤就是

create user 'root'@'%' identified by '123456'

create user 'root'@'***.**.com' identified by '123456'

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456';

GRANT ALL PRIVILEGES ON *.* TO 'root'@'***.**.com' IDENTIFIED BY '123456';

FLUSH  PRIVILEGES;

注意精确匹配的优先级要高于%这种模糊匹配, 而且有时候-hip会解析成-hhost名称 这样要看root@host名称是否有授权.

添加用户 可以使用add user 命令 也可以直接在mysql.user中添加这个用户. 比如: create user root@localhost identified by ‘123456’;

授权需要用grant 命令 如:GRANT ALL PRIVILEGES ON . TO ‘root’@’%’ IDENTIFIED BY ‘123456’;


注意:
1.登录,不知道为什么,我在my.cnf和启动参数中都制定了 mysql.sock 文件位置,但是默认还是会访问 /var目录下的 sock 文件,于是会报错没有权限。可以使用 ip 连接,如下:
./bin/mysql -h 127.0.0.1 -P you_port -uroot -p

2.家目录下任何环境可以启动 MySQL 需要配置环境变量,~/.bashrc 末尾加入 export PATH=$PATH:your_mysql_bin

3.安装完毕后,使用 root 用户名进行登录。默认 root 登录时没有密码的,可以登录上去自己设定。

以上是关于非 root 下安装 MySQL 5.6的主要内容,如果未能解决你的问题,请参考以下文章

MySQL数据库5.6版本首次安装Root密码问题

linux下mysql-5.6忘记root密码,重置root密码详细过程

重置MySQL 5.6中的ROOT密码

MySQL 5.6 root密码丢失

CentOS 源码安装MYSQL-5.6

MYSQL 二进制安装