linux主机系统版本:centos6.4
mysql版本:5.5
1)官网下载source package
2)解压缩source package
[root@kikkiking ~]# tar -xzvf mysql-5.5.58.tar.gz
3)新建mysql用户
[root@kikkiking ~]# useradd mysql -s /sbin/nologin
4)新建mysql的安装目录 /usr/local/mysql;data目录为/usr/local/data;socket目录为/usr/local/sock
[root@kikkiking ~]# mkdir /usr/local/mysql[root@kikkiking ~]# mkdir /usr/local/sock
[root@kikkiking ~]# mkdir /usr/local/data
[root@kikkiking~]# chown mysql:mysql -R /usr/local/mysql
[root@kikkiking ~]# chown mysql:mysql -R /usr/local/data
[root@kikkiking ~]# chown mysql:mysql -R /usr/local/sock
5)yum安装编译所需依赖包
[root@kikkiking ~]# yum -y install cmake gcc ncurses-devel bison git gcc-c++
6)使用cmake进行编译
[root@kikkiking ~]# cd mysql-5.5.58
[root@kikkiking mysql-5.5.58]# rm -f CMakeCache.txt
[root@kikkiking~]#cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \-DMYSQL_DATADIR=/usr/local/data\-DMYSQL_UNIX_ADDR=/usr/local/sock/mysql.sock \-DDEFAULT_CHARSET=utf8 \-DDEFAULT_COLLATION=utf8_general_ci \-DEXTRA_CHARSET=gbk,gb2312,utf8,ascii \-DENABLED_LOCAL_INFILE=on \-DWITH_INNOBASE_STORAGE_ENGINE=1\-DWITH_FEDERATED_STORAGE_ENGINE=1\-DWITH_BLACKHOLE_STORAGE_ENGINE=1\-DWITHOUT_EXAMPL_ESTORAGE_ENGINE=1\-DWITHOUT_PARTITION_ESTORAGE_ENGINE=1\-DWITH_ZLIB=bundled \-DWITH_READLINE=1\-DWITH_ENBEDDED_SERVER=1\-DWITH_DEBUG=0
附:-DDEFAULT_COLLATION=
7)
[root@kikkiking mysql-5.5.58]# make && make install
设置环境变量:
[root@kikkiking mysql-5.5.58]# echo "export PATH=/usr/local/mysql/bin:$PATH" >> /etc/profile
[root@kikkiking mysql-5.5.58]# source /etc/profile
[root@kikkiking mysql-5.5.58]# echo $PATH
8)数据库初始化
[root@kikkiking mysql-5.5.58]# cd /usr/local/mysql/scripts/[root@kikkiking scripts]# ./mysql_install_db --basedir=/usr/local/mysql --datadir=/usr/local/data --user=mysql
9)设置mysqld启动服务
[root@kikkiking scripts]# cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
[root@kikkiking scripts]# chmod+x /etc/init.d/mysqld
[root@kikkiking scripts]# chkconfig--add /etc/init.d/mysqld
[root@kikkiking scripts]# chkconfig--level 35 mysqld on
10)编辑mysql配置文件/etc/my.cnf,更改data、socket目录
[root@kikkiking ~]# vim /etc/my.cnf
11)启动mysql服务
[root@kikkiking ~]# service mysqld start
12)设置mysql登录密码并删除匿名用户
[root@kikkiking ~]# mysqladmin -uroot password '123'[root@kikkiking~]# mysql -uroot -p123
mysql>drop database test;
mysql> drop user ''@'localhost';
mysql> drop user ''@'pb.com';
mysql> select user,host from mysql.user where user='';
Emptyset (0.00 sec)
附:
若在更改密码时一直报错提示:
[root@kikkiking ~]# mysqladmin -uroot password '123'
mysqladmin: connect to server at 'localhost' failed
error: 'Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)'
Check that mysqld is running and that the socket: '/tmp/mysql.sock' exists!
可通过修改socket路径解决:
[root@kikkiking ~]# vim /etc/my.cnf
socket=/tmp/mysql.sock
重启服务:
[root@kikkiking ~]# service mysqld restart
13)忘记root密码的解决方式
win
C:\Users\kikkiking>net stop mysql
C:\Users\kikkiking> mysqld -–skip-grant-tables- #此时这个终端会卡在这里不动,再开一个cmd终端
C:\Users\kikkiking> mysql #直接使用mysql命令进入数据库
mysql>update mysql.user set password=password('123') where user='root'; #设置密码,
mysql> flush privileges; #刷新权限表,然后退出
关闭另一个终端,启动mysql服务
C:\Users\kikkiking>net start mysql
使用新密码登录mysql
C:\Users\kikkiking>mysql -uroot -p123
linux
1)
[root@kikkiking ~]# service mysqld stop #关闭mysql服务
[root@kikkiking~]# echo "skip-grant-tables" >> /etc/my.cnf #跳过权限表
[root@kikkiking ~]# mysql #直接登录数据库
mysql> update mysql.user set password=password('123') where user='root'; #修改root密码
mysql> flush privileges; #刷新权限表,然后退出数据库
不能直接使用set命令修改
mysql> set password for 'root'@'localhost'=password('123');
ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement
删除/etc/my.cnf中的skip-grant-tables
重启服务
[root@kikkiking 桌面]# service mysqld restart
使用新密码登录
[root@kikkiking 桌面]# mysql -uroot -p123
2)
[root@kikkiking ~]# service mysqld stop #停止mysqld服务
[root@kikkiking ~]# mysqld_safe --skip-grant-tables & #后台运行,跳过权限表
[root@kikkiking ~]# mysql #直接mysql命令登录数据库
mysql> update mysql.user set password=password('456') where user='root'; #修改密码
mysql> flush privileges; #刷新权限表,然后退出数据库
[root@kikkiking ~]# ps -ef | grep mysqld #查看刚才后台运行的mysqld服务
[root@kikkiking ~]# kill 13607 #杀掉
[root@kikkiking ~]# service mysqld start #启动服务
[root@kikkiking ~]# mysql -uroot -p456 #使用新密码登录数据库