玩转mysql源码安装

1.首先下载mysql源码

wget http://ftp.jaist.ac.jp/pub/mysql/Downloads/MySQL-5.1/mysql-5.1.73.tar.gz

2.解压

3../configure --prefix=/usr/local/mysql/ --localstatedir=/usr/local/mysql/data --without-debug --with-unix-socket-path=/tmp/mysql.sock --with-client-ldflags=-all-static --with-mysqld-ldflags=-all-static --enable-assembler --with-extra-charsets=gbk,gb2312,utf8 --with-pthread

注意:如果报sql_udf.o:undefined in glibc的话,做如下调整:

export CFLAGS="-O2 -DHAVE_DLOPEN=1"
export CXXFLAGS="-O2 -DHAVE_DLOPEN=1"

./configure --prefix=/usr/local/mysql/ --localstatedir=/usr/local/mysql/data --without-debug --with-unix-socket-path=/tmp/mysql.sock  --with-extra-charsets=gbk,gb2312,utf8 --with-pthread


编译参数解释:
--prefix=/usr/local/mysql/:指定安装位置
--localstatedir=/usr/local/mysql/data:指定数据库文件位置
--without-debug:禁用调用模式
--with-unix-socket-path=/tmp/mysql.sock:指定sock文件位置
--with-client-ldflags=-all-static:
--with-mysqld-ldflags=-all-static:以纯静态方式编译服务端和客户端
--enable-assembler:使用一些字符函数的汇编版本
--with-extra-charsets=gbk,gb2312,utf8 :gbk,gb2312,utf8字符支持
--with-pthread:强制使用pthread库(posix线程库)

4.make && make install

5.cp support-files/my-medium.cnf /etc/my.cnf //复制配置文件夹my.cnf

6./usr/local/mysql/bin/mysql_install_db --user=mysql  //初始化数据库

7.cp support-files/mysql.server /etc/rc.d/init.d/mysqld  //init启动脚本

8.如果第6步骤没有配置--user或者--user是启动用户名,执行service mysqld start    出错:Starting MySQL. ERROR! Manager of pid-file quit without updating file.

9.解决错误方法:chown -R mysql /usr/local/mysql/data 

10.[root@localhost support-files]# ./mysql.server start
Starting MySQL. SUCCESS! 

11.修改密码:

/usr/local/mysql/bin/mysqladmin -u root password '新密码'  

12.登录并且删除匿名用户:

/usr/local/mysql/bin/mysql -u root -p

Enter password:

mysql> show databases;

mysql> use mysql; 
Database changed

mysql> show tables;
+---------------------------+
| Tables_in_mysql           |
+---------------------------+
| columns_priv              |
| db                        |
| event                     |
| func                      |
| general_log               |
| help_category             |
| help_keyword              |
| help_relation             |
| help_topic                |
| host                      |
| ndb_binlog_index          |
| plugin                    |
| proc                      |
| procs_priv                |
| servers                   |
| slow_log                  |
| tables_priv               |
| time_zone                 |
| time_zone_leap_second     |
| time_zone_name            |
| time_zone_transition      |
| time_zone_transition_type |
| user                      |
+---------------------------+
23 rows in set (0.00 sec)

mysql> delete from user where user='';      
Query OK, 2 rows affected (0.00 sec)

mysql> quit
Bye

这是匿名用户, 默认从本地是可以用匿名用户登录, 但是用匿名用户登录, 只能看到test库。删完了别忘了重启啊!!!!

13.重启mysqld:service mysqld restart

14.Q&A

(1)mysql安装的时候,有一步是mysql_install_db --user=mysql,必须这样吗?

答:<1>.生成授权表实际上是完成了mysql的初始化。你在执行这个脚本之后,mysql里就会出现名为mysql的库。mysql库里有常用的权限表等系统表。比如设置用户权限的user表。
<2>.后面的参数--user所指定的用户是你想要运行mysqld进程用户名。这个是可变的,不一定非要是mysql。设置这个用户以后,所有通过mysqld进程创建的文件都会属于这个用户。网上的教程里多用mysql用户是为了在生产环境中更方便管理。

(2)那mysql目录以及其下的所有文件所有者都必须是mysql吗?这是必要的么?还有所属组?

答:这个不是必须的。但是组最好设定为mysql组。在进行权限管理时方便管理。
linux系统默认用户(比如root)也是可以的。但是在生产环境中,一般只需要将日志的路径(配置文件中日志的路径),和数据文件路径(datadir参数)设置为mysql用户就可以了。(这个不同的公司也有不同的设置,但是简单来说是这样的。)
上面说的其实都是linux系统权限管理的内容。有些文件,比如你不希望其他用户看到的文件,或者只有指定用户可写的文件,就可以设定成某个特殊用户。至于你后面问的所属组的问题。这个也是权限管理的一部分。比如说,一个文件的用户权限是root,组权限是mysql,这样的文件就只能root用户和mysql组里的用户访问。

(3)那是不是说即使不设置用户和所属组,也不影响使用?

答:是的。不设置也并不影响使用。因为linux默认用户是root。mysql的基本权限就都涵盖了。
因此可以这样理解:用户和用户组的作用一般是为了在生产过程中进行系统级的权限管理。

个人观点:会有影响,启动时会报错入第8条那样。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

会飞的幸运儿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值