tar包方式安装MySQL
项目数据库的连接地址配置可先配好:/etc/hosts中配置:
一、卸载
由于CentOS一般默认会有MySQL,所以先查看当前安装情况:
[root@localhost ~]$ rpm -qa|grep -i mysql
# 或者:
[root@localhost ~]$ yum list installed mysql*
之后将CentOS自带的数据库卸载,建议用yum命令,因为yum命令可以自动删除与mysql相关的依赖;如果用rpm命令,则还需要手动去删除和mysql相关的文件,比较麻烦
[root@localhost ~]$ yum remove mysql*
# 或者
[root@localhost ~]$ yum remove MySQL-python.x86_64
# 或者
[root@localhost ~]$ rpm -ev package
# 删除遗留文件(yum方式卸载的话应该已经没有遗留文件了):
[root@localhost ~]$ rm -rf /var/lib/mysql
[root@localhost ~]$ rm /etc/my.cnf
卸载之后可以用 whereis
命令查找 mysql
相关文件,因为上面是用 yum
卸载的,所以 mysql
被清理的很干净;如果用 rpm
将会很麻烦,还有很多文件需要手动清理
[root@localhost ~]$ whereis mysql
mysql:
二、安装
当前文件夹中所有的rpm包强制安装,忽略依赖去安装:
rpm -Uvh *.rpm --nodeps --force
卸载干净之后,将下载好的MySQL安装包上传到CentOS中,并进行解压:
链接: MySQL-Download
新建文件夹如下(根据自己意愿来建,用于放压缩包):
[root@localhost ~]$ mkdir /data/tools
[root@localhost ~]$ cd /data/tools
[root@localhost ~]$ rz
[root@localhost ~]$ tar -xvf MySQL-5.5.54-1.linux2.6.x86_64.rpm-bundle.tar
# (如果是MySQL8的安装,解压后会有三个xz的压缩包,继续用 tar -xvf 解压第一个xz)
# 安装rpm(按照以下顺序安装):
[root@localhost ~]$ yum localinstall MySQL-server-5.5.54-1.linux2.6.x86_64.rpm
[root@localhost ~]$ yum localinstall MySQL-devel-5.5.54-1.linux2.6.x86_64.rpm
[root@localhost ~]$ yum localinstall MySQL-client-5.5.54-1.linux2.6.x86_64.rpm
[root@localhost ~]$ yum localinstall MySQL-shared-compat-5.5.54-1.linux2.6.x86_64.rpm
三、启动并连接测试、配置
1. 启动
# 启动MySQL:
[root@localhost ~]$ /etc/init.d/mysql start
# 设置每次开机启动:
[root@localhost ~]$ chkconfig --levels 345 mysqld on
注意:
这里可能mysqld会没用,可以进行如下设置:
复制 mysql.server
文件到 /etc/init.d
下,并命名为 mysqld
:
[root@localhost ~]$ cp /usr/share/mysql/mysql.server /etc/init.d/mysqld
[root@localhost ~]$ chkconfig --add mysqld
这样应该就可以设置开机启动了,再执行设置开机启动命令
如果以上都设置了,但发现mysql不能开机启动,可能是selinux惹的祸,一般CentOS会默认开启selinux
解决方法:关闭它,打开 /etc/selinux/config
,把 SELINUX=enforcing
改为 SELINUX=disabled
后存盘退出重启机器试试。
2. 连接
连接MySQL试一下:
[root@localhost ~]$ mysql
# 进入成功之后可以修改密码:
mysql> set password = password('xxxx')
退出用:
mysql> \q
# 或者
mysql> exit
3. 开启端口
开启3306端口并保存:
[root@localhost ~]$ /sbin/iptables -I INPUT -p tcp --dport 3306 -j ACCEPT
[root@localhost ~]$ /etc/rc.d/init.d/iptables save
4. 编码修改
进入mysql之后查看编码:
[root@localhost ~]$ mysql
mysql> show variables like 'character%';
# 退出数据库:
mysql> \q
bye
# 关闭数据库:
[root@localhost ~]$ service mysqld stop
Stopping mysqld
下面是修改数据库编码:
修改my.cnf文件:
[root@localhost ~]$ vi /etc/my.cnf # 更详细的看下面另一种方式装MySQL中的my.cnf配置
# 分别在[client]和[mysqld]下面加入如下代码:
[client]
default_character_set=utf8
[mysqld]
collation_server=utf8_general_ci
character_set_server=utf8
max_allowed_packet = 16M
group_concat_max_len = 4294967295
my.cnf文件内容如下:
[mysql]
default-character-set=utf8
[client]
default-character-set=utf8
[mysqld]
explicit_defaults_for_timestamp=true
# Remove leading # and set to the amount of RAM for the most important data
# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
innodb_buffer_pool_size = 512M
lower_case_table_names = 1
# 0:大小写敏感;
# 1:大小写不敏感
# Remove leading # to turn on a very important data integrity option: logging
# changes to the binary log between backups.
# log_bin
# These are commonly set, remove the # and set as required.
basedir = "/usr/local/mysql"
datadir = "/usr/local/mysql/data"
port = 3306
# server_id = .....
max_allowed_packet=500M
# The default character set that will be used when a new schema or table is
# created and no character set is defined
character-set-server=utf8
# The default storage engine that will be used when create new tables when
default-storage-engine=INNODB
# Remove leading # to set options mainly useful for reporting servers.
# The server defaults are faster for transactions and fast SELECTs.
# Adjust sizes as needed, experiment to find the optimal values.
# join_buffer_size = 128M
# sort_buffer_size = 2M
# read_rnd_buffer_size = 2M
#sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER
重启mysql服务:
[root@localhost ~]$ service mysqld restart
5. 新建用户并授权
为数据库添加用户并授权(在 use mysql;
之后操作):
insert into user (host,user) values ('%','test_user');
# 或者是
create user 'test_user'@'%' identified by 'xxx密码';
# 授权
grant all privileges on *.* to 'test_user'@'%' with grant option;
# 或者
grant all privileges on *.* to 'root'@'我电脑的ip地址' identified by '密码';
# 之后刷新:
FLUSH PRIVILEGES;
至此,tar包安装方式安装完成!
tar.gz方式安装MySQL
- 上传Mysql安装包“mysql-6.0.11-alpha-linux-x86_64-glibc23.tar.gz”到部署机,位置任意;
- 将Mysql安装包解压到其所在目录,命令如下:
[root@localhost ~]$ tar -zxvf tar -zxvf mysql-6.0.11-alpha-linux-x86_64-glibc23.tar.gz
- 复制解压得到的目录到系统的本地软件目录“/usr/local/”,命令如下:
[root@localhost ~]$ cp -rf mysql-6.0.11-alpha-linux-x86_64-glibc23 /usr/local/mysql
- 添加mysql用户组和mysql用户,命令如下:
[root@localhost ~]$ groupadd mysql
[root@localhost ~]$ useradd -r -g mysql mysql
- 进入安装Mysql软件的目录,命令如下:
[root@localhost ~]$ cd /usr/local/mysql
- 修改当前目录拥有者为刚才新建的mysql用户,命令如下:
[mysql@localhost mysql]$ chown -R mysql:mysql ./
- 复制默认全局启动参数配置文件到/etc目录,命令如下:
[mysql@localhost mysql]$ cp ./support-files/my-medium.cnf /etc/my.cnf
- 执行安装包中自带脚本,安装数据库,命令如下:
[mysql@localhost mysql]$ ./scripts/mysql_install_db --user=mysql
- 修改当前目录拥有者为root用户,命令如下:
[mysql@localhost mysql]$ chown -R root:root ./
- 修改data目录拥有者为mysql用户,命令如下:
[root@localhost ~]$ chown -R mysql:mysql data
到此,数据库安装完毕,下面进行验证。
11. 修改 /etc/my.cnf
文件。修改数据库的字符集,并使之“大小写不敏感”。
[client] # 下添加:
default-character-set=utf8
[mysqld] # 下添加:
character-set-server=utf8
collation_server=utf8_general_ci
lower_case_table_names=1
max_allowed_packet = 16M(如果已经有了修改一下)
group_concat_max_len = 4294967295
[mysql] # 下添加:
default-character-set=utf8
- 启动Mysql数据库,注意:需用root权限执行,命令如下:
[root@localhost ~]$ sudo /usr/local/mysql/support-files/mysql.server start
查看Mysql进程是否已启动,命令如下:
[root@localhost ~]$ ps -ef|grep mysql
显示如下图所示结果,说明Mysql数据库启动成功:
- 修改Mysql数据库的root用户的密码,root的初始密码默认为空的,命令如下:
[root@localhost mysql]$ ./bin/mysqladmin -u root password '此处填写密码'
安装mysql-client客户端
服务器中如果要用到mysql命令,可以只安装mysql-client客户端就行:
rpm包安装:
[root@localhost ~]$ rpm -ivh mysql-community-client-5.7.34-1.el7.x86_64.rpm --force --nodeps
安装之后如果运行mysql命令报错:
执行 mysql -u root -p 时报错:
mysql: error while loading shared libraries: libncurses.so.5: cannot open shared object file: No such file or directory
原因: mysql在启动时发现缺少 libncurses.so.5
这个依赖,并且在 /usr/lib
以及 /lib
中也无法找到该依赖
解决:
先查看mysql的依赖:
[root@localhost ~]$ cd /usr/bin/
[root@localhost ~]$ ldd mysql
会看到如下依赖:
在/usr/lib、/lib64、/usr/lib64中寻找一个大于或者等于该依赖版本的依赖文件,我的是在/lib64中找到了一个libncurses.so.6.1,然后建立一个软链接(相当于快捷方式):
sudo ln -s 文件路径 快捷方式路径
[root@localhost ~]$ sudo ln -s /lib64/libncurses.so.6.1 /lib64/libncurses.so.5
这样就在 /lib64
下建立了一个 libncurses.so.5
的快捷方式。mysql在启动时就会寻找该 libncurses.so.5
依赖的快捷方式,最后实际链接到了 libncurses.so.6.1
依赖。此时再执行 mysql -u root -p
时就会通过
mysql设置开机启动
# 将服务文件拷贝到init.d下,并重命名为mysql
[root@localhost ~]$ cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
# 赋予可执行权限
[root@localhost ~]$ chmod +x /etc/init.d/mysql
# 添加服务
[root@localhost ~]$ chkconfig --add mysql
# 显示服务列表
[root@localhost ~]$ chkconfig --list
# 如果看到mysql的服务,并且3,4,5都是on的话则成功,如果是off,则键入
[root@localhost ~]$ chkconfig --level 345 mysql on
# 重启电脑
[root@localhost ~]$ reboot
# 如果看到有监听说明服务启动了
[root@localhost ~]$ netstat -na | grep 3306
如果以上都设置了,但发现mysql不能开机启动,极有可能是 selinux
惹的祸,一般CentOS会默认开启selinux
解决方法:关闭它,打开 /etc/selinux/config
,把 SELINUX=enforcing
改为 SELINUX=disabled
后存盘退出重启机器试试。