在 Linux 下源码安装 MySQL

原创
2013/11/16 01:35
阅读数 801

1 下载 MySQL 安装包

wget http://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.14.tar.gz

2 安装 MySQL 依赖包

apt-get install build-essential
apt-get install libncurses5-dev
apt-get install cmake

提示:可通过 apt-cache depends 命令查看以上程序包的相关依赖包。

CentOS:
yum groupinstall "Development Tools"
yum install ncurses-devel

3 编译并安装 MySQL

1) 解压 MySQL 安装包

tar -zxf mysql-5.6.14.tar.gz
cd mysql-5.6.14

2) 编译 MySQL

cmake \
-DCMAKE_INSTALL_PREFIX=/opt/mysql \
-DMYSQL_DATADIR=/opt/mysql/data \
-DSYSCONFDIR=/opt/mysql/conf \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci

参考文档:
http://dev.mysql.com/doc/refman/5.6/en/source-configuration-options.html

3) 安装 MySQL

make -s
make install -s

4 配置 MySQL

注意:以下操作均在 /opt/mysql 目录下进行。

第一步:创建 MySQL 用户

groupadd mysql
useradd -g mysql -s "/usr/sbin/nologin" mysql

CentOS:
addgroup mysql
useradd -g mysql -s "/sbin/nologin" mysql

第二步:初始化数据库

chown mysql:mysql -R data
./scripts/mysql_install_db --user=mysql

执行完毕后,将在 MySQL 根目录下生成一个 my.cnf 文件。

第三步:创建配置文件

mkdir conf
mv my.cnf conf/

注意:在 CentOS 下,若 /etc/ 目录下存在 my.cnf 文件,则需要将其删除。

第四步:更改默认字符集为 UTF8

vim conf/my.cnf

...
[mysql]
default-character-set=utf8

[mysqld]
character-set-server=utf8
...

为防止中文乱码,建议将数据库默认编码方式统一改为 utf8,默认是 latin1。

第五步:添加启动服务

cp support-files/mysql.server /etc/init.d/mysqld
update-rc.d mysqld defaults

移除启动服务:
update-rc.d -f mysqld remove

CentOS:
cp support-files/mysql.server /etc/init.d/mysqld
chkconfig mysqld on

第六步:配置环境变量

vim ~/.bashrc

...
# MySQL
export PATH=$PATH:/opt/mysql/bin

source ~/.bashrc

5 启动 MySQL 服务

service mysqld start

停止 MySQL 服务:
service mysqld stop

重启 MySQL 服务:
service mysqld restart

6 登录 MySQL

mysql -u root –p

随后需输入 root 用户密码(root)。

7 设置 root 用户密码

set password = password('新密码');

设置其他用户密码:
set password for '用户名'@'主机名' = password('新密码');

命令行操作:
mysqladmin -u root password '新密码'

8 附录

1) 清理 MySQL 用户

select host, user, password from mysql.user;
delete from mysql.user where password = '';
flush privileges;

为了提高安全性,建议删除所有空密码的用户,仅保留 root@localhost 一个用户。

2)创建用户

create user '用户名'@'主机名' identified by '密码';

主机名可用 localhost、具体 IP、%(任意 IP)。

删除用户:
drop user '用户名'@'主机';

3)授权

grant 权限 on 数据库名.表名 to '用户名'@'主机名';

权限包括:all、select、insert、update、delete 等,多种权限可用“,”分割。
表名可用“*”通配符。

撤销授权:
revoke 权限 on 数据库名.表名 from '用户名'@'主机名'

4) 远程访问 MySQL

若需要通过 root 用户远程访问 MySQL,则需要修改 mysql.user 表的 host 为“%”。

update mysql.user set host = '%' where user = 'root';
flush privileges;

5) 开放 MySQL 端口

对于 CentOS 而言,需要对外开放 3306 端口。

iptables -I INPUT -p tcp --dport 3306 -j ACCEPT
/etc/init.d/iptables save
service iptables restart

查看 iptables:
/etc/init.d/iptables status

vim /etc/sysconfig/iptables

展开阅读全文
加载中
点击加入讨论🔥(2) 发布并加入讨论🔥
打赏
2 评论
8 收藏
1
分享
返回顶部
顶部