源码编译mysql-5.5.28以及如何恢复管理员账号

在真正的生产环境中,管理员负责管理成千上万的用户信息量,有时总会避免不了管理员账号忘记,这时候要怎么办呢?收拾不了这个残局有可能会让一个公司损失难以估算的收入,那么到底怎么解决呢?博主在下面的实例中会涉及到关于这个问题的解决办法,要想知道怎么解决,请跟我来。follow me!!


实验环境:安装好开发环境,其次,由于在版本5.5之后安装mysql使用cmake编译,但cmake是独立于源码的编译功能,即编译工作可以在另一个指定的目录下而非源码目录中进行,这可以保证源码目录不受任何一次编译的影响。因此在同一个源码树上可以进行多次不同的编译,至此安装mysql之前要先编译安装cmake软件包;
实验目的:通过cmake安装mysql服务,能够在mysql服务上进行创建、删除等数据操作;同时也能够使用客户端命令进行数据操作;
第一步:安装cmake-2.8.8
  
  
  
  
  1. # tar xf cmake-2.8.8.tar.gz  

  2. #cd cmake-2.8.8  

  3. cmake-2.8.8#./configure  

  4. cmake-2.8.8#make  

  5. cmake-2.8.8#make install  

  6. cmake-2.8.8#which cmake    ###查看cmake安装的位置  

  7. /usr/local/bin/cmake  

第二步:安装mysql- 5.5.28 .tar.gz

  
  
  
  
  1. #tar xf mysql-5.5.28.tar.gz  

  2. #cd mysql-5.5.28  

  3. mysql-5.5.28#cmake .  

  4. -DCMAKE_INSTALL_PREFIX=/usr/local/mysql    ##指定安装mysql路径-DMYSQL_DATADIR=/data/mydata    ##指定mysql的数据目录安装目录  

  5. -DSYSCONFDIR=/etc     ###指定配置文件的安装路径-DWITH_INNOBASE_STORAGE_ENGINE=1   ##这几项指定编译的存储引擎  

  6. -DWITH_ARCHIVE_STORAGE_ENGINE=1  

  7. -DWITH_BLACKHOLE_STORAGE_ENGINE=1  

  8. -DWITH_READLINE=1    ###表示能够使用load批量导入mysql数据  

  9. -DWITH_SSL=system        ##mysql支持基于ssl会话功能  

  10. -DWITH_ZLIB=system    ###表示压缩库  

  11. -DWITH_LIBWRAP=0    ###表示mysql不支持tcp wrapper访问控制  

  12. -DMYSQL_UNIX_ADDR=/tmp/mysql.sock      ###默认套接字文件路径  

  13. -DDEFAULT_CHARSET=utf8     ###指定mysql的默认字符集  

  14. -DDEFAULT_COLLATION=utf8_general_ci   ###指定排序规则,一定要与指定的语言匹配  

  15. # make  

  16. # make install  

第三步:为mysql提供数据目录
  
  
  
  
  1. 建议:使用创建逻辑卷用来存储mysql数据  

  2. #fdisk /dev/sda  

  3. #####创建一个/dev/sda5分区、大小为20G######  

  4. #partprobe /dev/sda5    ###系统重读分区  

  5. #pvcreate /dev/sda5     ###创建逻辑卷  

  6. #vgcreate myvg /dev/sda5   ###创建卷组  

  7. #lvcreate �CL 10G �Cn mydata myvg   ###创建一个名为mydata、大小为10G的逻辑卷  

  8. #mke2fs �Cj /dev/myvg/mydata    ##对创建的逻辑卷格式化  

  9. #vim /etc/fstab    ##让/dev/myvg/mydata开机自动挂载  

  10. /dev/myvg/mydata    /mydata     ext3    defaults    0 0  

  11. 保存退出  

  12. #mkdir /mydata  

  13. #mount �Ca      ###把自动挂载的分区全部挂载  

  14. #mkdir /mydata/data      ##创建一个数据目录  

  15. #groupadd �Cr mysql  

  16. #useradd �Cr �Cg mysql �Cs /sbin/nologin mysql    ##创建mysql组、mysql用户  

  17. #chown �CR mysql.mysql /mydata/data/    ###修改数据目录的属主、属组为mysql,不让任何人对此目录有执行权限  

  18. #chown �CR :mysql /usr/local/mysql/  

第四步:初始化mysql
  
  
  
  
  1. mysql#scripts/mysql_install_db �Cuser=mysql �Cdatadir=/mydata/data  

  2. mysql#cp support-files/my-large.cnf /etc/my.cnf      ##复制样本配置文件  

  3. mysql#cp support-files/mysql.server /etc/init.d/mysqld     ##复制服务器脚本  

  4. mysql#vim /etc/my.cnf    ###把数据目录添加到配置文件中,防止使用通用二进制重新编译时出错  

  5. 添加内容:datadir=/mydata/data  

  6. 修改内容:thread_concurrency=4  

  7. 保存退出  

  8. mysql#chkconfig �Cadd mysqld  

  9. mysql#chkconfig �Clist mysqld  

  10. mysql#service mysqld start  

----------------------------------------------------------------------------------------------
笔者在执行服务启动时,出现了下面的错误,出现这种错误的原因可能是:1、此前的服务未关闭 2、数据初始化失败 3、数据目录位置错误 4、数据目录权限问题;
解决方法:1、要在启动服务之前先在配置文件中添加数据目录,之后再重新加载服务;2、如果还是出现错误,可以把服务进程的监听端口3306强行杀死,之后再执行重启操作;两种方式都可以尝试一下;

------------------------------------------------------------------------------------------------

第五步:让mysql能够执行客户端命令
  
  
  
  
  1. #vim /etc/profile.d/mysql.sh  

  2. 添加内容:export PATH=$PATH:/usr/local/mysql/bin  

  3. 保存退出  

第六步:删除匿名用户,并给root用户添加密码(为了数据安全性考虑)
  
  
  
  
  1. #mysql  

  2. mysql>use mysql;  

  3. mysql>selectuser,host,passwordfromuser;  

  4. mysql>dropuser ‘’@’localhost’;  

  5. mysql>dropuser ‘’@’localhost.localdomain’;  

  6. mysql>updateusersetpassword=password(‘redhat’) whereuser=’root’;  

  7. mysql>flush privileges;  

  8. mysql>\q  

  9. #mysql �Curoot �Ch172.16.52.3  

  10. ERROR 1130 (00000): Host '172.16.52.3'isnot allowed toconnectto this MySQL server  

  11. ###使用本地地址172.16.52.3连接数据库,还是不允许连接,虽然此地址为本地地址,但对于mysql服务来说,这个地址已经使用tcp协议连接,而不再是本地连接了  

  12. #mysql �Curoot �Cp     ##可以使用root用户输入密码登录mysql服务器  

  13. #vim .my.cnf    ###如果想在本地连接并且又不想输入密码连接,可以在自己的家目录下编辑.my.cnf,会自动读取配置文件获取信息;要记住:此文件一定不要让别人看到;  

  14. [client]  

  15. user=root  

  16. password=redhat  

  17. host=localhost  

  18. 保存退出  

  19. #mysql  

  20. mysql>    ##这时候就可以连接到mysql服务中  

如何让管理员重新找回账号

第一步:关闭mysqld服务,编辑配置文件

第二步:重启服务

第三步:进入mysql服务器,修改管理员账号

第四步:关闭mysql服务进程,重新编辑配置文件

第五步:连接mysql服务器

在展示的截图中,可能会有不尽人意的地方,还请大家谅解!说句实话:我对如何在截图的基础上让图看起来多么的好看真是感到一顿茫然,一度让我身边的朋友说我截得图是如何的烂,对于这个问题我是心知肚明的,谁让我没有欣赏美的细胞呢,对吧!

你可能感兴趣的:(源码编译mysql)