Linux下 安装MySQL

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

  1. 上传Mysql安装包“mysql-6.0.11-alpha-linux-x86_64-glibc23.tar.gz”到部署机,位置任意;
  2. 将Mysql安装包解压到其所在目录,命令如下:
[root@localhost ~]$ tar -zxvf tar -zxvf mysql-6.0.11-alpha-linux-x86_64-glibc23.tar.gz
  1. 复制解压得到的目录到系统的本地软件目录“/usr/local/”,命令如下:
[root@localhost ~]$ cp -rf mysql-6.0.11-alpha-linux-x86_64-glibc23  /usr/local/mysql
  1. 添加mysql用户组和mysql用户,命令如下:
[root@localhost ~]$ groupadd mysql
[root@localhost ~]$ useradd -r -g mysql mysql
  1. 进入安装Mysql软件的目录,命令如下:
[root@localhost ~]$ cd /usr/local/mysql
  1. 修改当前目录拥有者为刚才新建的mysql用户,命令如下:
[mysql@localhost mysql]$ chown -R mysql:mysql ./
  1. 复制默认全局启动参数配置文件到/etc目录,命令如下:
[mysql@localhost mysql]$ cp ./support-files/my-medium.cnf  /etc/my.cnf
  1. 执行安装包中自带脚本,安装数据库,命令如下:
[mysql@localhost mysql]$ ./scripts/mysql_install_db --user=mysql
  1. 修改当前目录拥有者为root用户,命令如下:
[mysql@localhost mysql]$ chown -R root:root ./
  1. 修改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
  1. 启动Mysql数据库,注意:需用root权限执行,命令如下:
[root@localhost ~]$ sudo /usr/local/mysql/support-files/mysql.server start

查看Mysql进程是否已启动,命令如下:

[root@localhost ~]$ ps -ef|grep mysql

显示如下图所示结果,说明Mysql数据库启动成功:
mysql进程信息

  1. 修改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

会看到如下依赖:
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 后存盘退出重启机器试试。

猜你喜欢

转载自blog.csdn.net/Laputa_Castle/article/details/130110132