近两天,在Linux系统的学习中,遇到了不少问题,对于我这样一个刚接触Linux系统的新手来说,是有点不友好。这篇文章,主要总结困扰我两天的Linux下安装MySQL的问题,也就是对网上查阅的一些资料的一个总结。如果有和我碰到相同情况的码友,请参考以下详细步骤:
- 下载mysql相关的Linux压缩包,一般下载的都是x86_64架构的包
- 在SecureCRT中使用ALT+P调出sftp窗口。使用“put windows文件路径”命令将windows下的文件上传至Linux服务器,默认上传到root目录下。
- 卸载自带的mysql(如果有的话)
- rpm -qa | grep mysql:查找是否含有mysql
- rpm -e --nodeps mysql路径:卸载已安装的mysql
- 卸载自带的Mariadb
- rpm -qa|grep mariadb 查找已安装的mariadb
- rpm -e --nodeps 文件名 卸载mariadb
- 创建mysql分组(提示有了就不管)
- groupadd mysql
- 创建一个用户加入mysql用户组
- useradd -g mysql mysql
- 转到root目录下,将压缩包使用mv命令移动到/usr/local下面
- mv 你下载的mysql压缩包(就是那个以.tar.gz结尾的文件) /usr/local/
- 解压mysql压缩包
- tar -zxvf 你下载的mysql压缩包(就是那个以.tar.gz结尾的文件)
- 重命名解压出来的文件为mysql,就是是一长串关于版本信息的那个。
- mv 解压后的文件 mysql
- 配置my.cnf配置文件,依次执行下列操作
- cd /usr/local/mysql/support-files
- cp my-default.cnf /etc/my.cnf
- vim /etc/my.cnf
- 将/etc/my.cnf中的内容全部删除或者每行用“#”注释掉,添加以下内容:
-
[mysql] default-character-set=utf8 socket=/var/lib/mysql/mysql.sock [mysqld] skip-name-resolve port = 3306 socket=/var/lib/mysql/mysql.sock basedir=/usr/local/mysql datadir=/usr/local/mysql/data max_connections=200 character-set-server=utf8 default-storage-engine=INNODB lower_case_table_name=1 max_allowed_packet=16M
- 安装autoconf库(需联网)
- yum -y install autoconf
- 进入mysql安装目录进行安装,依次执行下列命令
- cd /usr/local/mysql
- chown -R mysql:mysql ./
- ./scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/
- 安装好后开始配置,授予my.cnf最大权限777
- cd / 回到根目录
- chown 777 /etc/my.cnf
- 复制启动脚本到资源目录
- cp ./support-files/mysql.server /etc/rc.d/init.d/mysqld
- 增加mysqld服务控制脚本执行权限
- chmod +x /etc/rc.d/init.d/mysqld
- 将mysqld服务加入到系统服务
- chkconfig --add mysqld
- 检查mysqld服务是否已经生效
- chkconfig --list mysqld
- 生效的话最后会出现类似这样一句话:mysqld 0:off 1:off 2:on 3:on 4:on 5:on 6:off
- 将mysql的bin目录加入PATH环境变量,编辑 ~/.bash_profile文件
- vim ~/.bash_profile 编辑文件
- export PATH=$PATH:/usr/local/mysql/bin 在最后添加上这样一句话
- source ~/.bash_profile 重新加载此文件,使修改生效
- 创建相关依赖文件
- cd / 转到根目录
- mkdir /var/lib/mysql
- chmod 777 /var/lib/mysql 给创建的文件最大的权限
- 启动mysql
- service mysqld start 注意mysql后面有个“d”
- 登录mysql
- mysql -uroot -p 第一次登录没有密码,提示输入密码直接回车
- 设置root账户密码
- use mysql
- update user set password=password('你的密码') where user='root' and host='localhost';
- Linux下安装的mysql,登录账户可能含有空账户,导致登录的时候输密码无效。
- 这时使用mysql -uroot -p直接登录,一次不成,多试几次
- 登录后使用use mysql切换到mysql数据库,执行下列sql语句
- select * from user where user=''; 查询是否有空账户
- delete from user where user = ''; 有的话,删除空账户
- flush privileges; 重载权限表
- 使用exit退出mysql,后执行service mysqld restart 命令重启mysql服务
- 最后。尝试使用账户密码登录