原文摘自:http://www.linuxidc.com/Linux/2016-03/129683.htm
关于用户和权限相关的部分摘自:http://blog.youkuaiyun.com/ithomer/article/details/9971003
首先CentOS7 已经不支持mysql,因为收费了你懂得,所以内部集成了mariadb,而安装mysql的话会和mariadb的文件冲突,所以需要先卸载掉mariadb,以下为卸载mariadb,安装mysql的步骤。
#列出所有被安装的rpm package
rpm -qa | grep mariadb
#卸载
rpm -e mariadb-libs-5.5.37-1.el7_0.x86_64
错误:依赖检测失败:
libmysqlclient.so.18()(64bit) 被 (已安裝) postfix-2:2.10.1-6.el7.x86_64 需要
libmysqlclient.so.18(libmysqlclient_18)(64bit) 被 (已安裝) postfix-2:2.10.1-6.el7.x86_64 需要
#强制卸载,因为没有--nodeps
rpm -e --nodeps mariadb-libs-5.5.37-1.el7_0.x86_64
#安装mysql依赖
yum install vim libaio net-tools
其他情况:
1、centos下yum暂时没有mysql-server直接安装包;
MariaDB是MySQL社区开发的分支,也是一个增强型的替代品;
2、安装MariaDB
yum -y install mariadb-server mariadb mariadb-devel
systemctl start mariadb
systemctl enable mariadb
mysql_secure_installation
firewall-cmd --permanent --add-service mysql
systemctl restart firewalld.service
iptables -L -n|grep 3306
CentOS7的yum源中默认好像是没有mysql的。为了解决这个问题,我们要先下载mysql的repo源。
1.下载mysql的repo源
$ wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm
2.安装mysql-community-release-el7-5.noarch.rpm包
$ sudo rpm -ivh mysql-community-release-el7-5.noarch.rpm
安装这个包后,会获得两个mysql的yum repo源:/etc/yum.repos.d/mysql-community.repo,/etc/yum.repos.d/mysql-community-source.repo。
3.安装mysql
$ sudo yum install mysql-server
根据步骤安装就可以了,不过安装完成后,没有密码,需要重置密码。
4.重置密码
重置密码前,首先要登录
$ mysql -u root
登录时有可能报这样的错:ERROR 2002 (HY000): Can‘t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock‘ (2),原因是/var/lib/mysql的访问权限问题。下面的命令把/var/lib/mysql的拥有者改为当前用户:
$ sudo chown -R openscanner:openscanner /var/lib/mysql
然后,重启服务:
$ service mysqld restart
Redirecting to /bin/systemctl restart mysqld.service
==== AUTHENTICATING FOR org.freedesktop.systemd1.manage-units ===
Authentication is required to manage system services or units.
Authenticating as: root
如果出现这种错误,则说明权限不足,用sudo或者root运行
$ sudo service mysqld restart
登录重置密码:
$ mysql -u root
mysql > use mysql;
mysql > update user set password=password(‘123456‘) where user=‘root‘;
mysql > exit;
5.开放3306端口
$ sudo vim /etc/sysconfig/iptables
添加以下内容:
-A INPUT -p tcp -m state --state NEW -m tcp --dport 3306 -j ACCEPT
保存后重启防火墙:
$ sudo service iptables restart
这样从其它客户机也可以连接上mysql服务了。
MYSQL启动后报:ERROR! The server quit without updating PID file错误的问题解决
MYSQL日志:Can’t find file: ‘./mysql/plugin.frm’ (errno: 13 - Permission denied)
1、权限
chown -R mysql:mysql /home/mysql/data” “chmod -R 755 /home/mysql/data
entos7的selinux问题:打开/etc/selinux/config,把SELINUX=enforcing改为SELINUX=disabled后存盘退出重启机器。
附录:
1、建议给mysql创建对应的用户和组专门管理mysql,不宜每次都用root账户来登录管理
用户可以建立一个专门用于MySQL的用户组和用户名,用于启动和关闭MySQL数据库,以及对数据库的一些操作。建立用户组可以使用如下命令:
#groupadd mysql //创建mysql组
#groupadd [-g GID] GROUP
其中:
GROUP:是要添加的组名
-g:用于指定 GID,默认为使用当前最大的 GID 加1
举例: 添加一个新组 leader
查询组信息:
[root@iz2ze6u0apce8jpapxeubpz tar.gz]# grep mysql /etc/group
mysql:x:1000:
[root@iz2ze6u0apce8jpapxeubpz tar.gz]# grep mysql /etc/gshadow
mysql:!::
[root@iz2ze6u0apce8jpapxeubpz tar.gz]# cat /etc/group |grep mysql
mysql:x:1000:
[root@iz2ze6u0apce8jpapxeubpz tar.gz]# cat mysql /etc/gshadow |grep mysql
cat: mysql: No such file or directory
mysql:!::
[root@iz2ze6u0apce8jpapxeubpz tar.gz]#
2)groupmod
groupmod 用于修改系统已存在的组账号。格式如下:
#groupmod [options] GROUP
其中:
GROUP:为要修改的组账户名
常用选项:
-g GID:重新指派 GID
-n NEW_GROUP:更改组名为 NEW_GROUP
举例: 将 mysql组更名为 mysqls
# groupmod -n mysqls mysql
# grep mysql /etc/group
mysqls:x:1000:
将 leaders 组的 GID 改为 3000
# groupmod -g 3000 leaders
# grep leader /etc/group
leaders:x:3000:
用户管理
1)useradd
useradd 用于添加用户账号或设置添加用户使用的默认信息。格式如下:
格式1:useradd [options] LOGIN
格式2:useradd -D
格式3:useradd -D [options]
说明:
格式1:用于添加用户账号,LOGIN 为用户登录账号
格式2:用于显示添加用户使用的默认信息
格式3:用于设置添加用户使用的默认信息
添加用户选项:
选项 说明
-u UID 指定新用户的 UID,默认为使用当前最大的 UID 加1
-g GROUP 指定新用户的主组
-G GROUP1[,GROUP2,…[,GROUPN]]] 指定新用户的附加组
-d HOME_DIR 指定新用户的登录目录
-s SHELL 指定新用户使用的 Shell,默认为 bash
改变用户默认值选项:
在配置文件 /etc/login.defs 和 /etc/default/useradd 中存放了用户默认数据。
使用举例:
1、创建一个新用户 newuser,同时创建用户自家目录
# useradd newuser
2、创建一个新用户 tom,同时加入 staff 附加组中
# useradd -G staff tom
3、创建一个新用户 webmaster,不创建用户自家目录,指定登录目录 /www,同时加入 apache 附加组中
# useradd -d /www -M -G apache webmaster
2)usermod
usermod 用于修改系统已存在的组账号。格式如下:
#usermod [options] LOGIN
其中:
LOGIN:为要修改的用户账号名
选项:-c、-d、-e、-f、-g、-G、-s、-u 的含义与 useradd 选项的含义相同
添加了如下选项:
-l NEW_LOGIN:更改用户登录名为 NEW_LOGIN
-c COMMENT 说明用户的附加信息,如全名等
-e EXPIRE_DATE 指定用户的登录失效时间,格式为 YYYY-MM-DD
-f INACTIVE 指定在密码过期后多少天即关闭该账号, 默认值为 -1,即不做限制
-k SKEL_DIR 指定 skel 目录,默认存放在 /etc/skel/
-m 创建新用户的自家目录,默认值
-M 不创建新用户的自家目录
选项 说明
-b BASE_DIR
定义使用者所属目录的上级目录。用户名称会附加在BASE_DIR后面用来建立新使用者的目录。 当
然使用-d后则此选项无效。
-e
EXPIRE_DATE
定义使用者账号失效日期。
-f INACTIVE 定义在密码过期后多少天即关闭该账号。
-g GROUP 定义新账号起始组名或GID。组名必须为现已存在的组名。GID也必须为现已存在的GID。
-s SHELL 定义用户默认使用的 shell。
-L:锁定用户账号
-U:对用户账号解除锁定
举例:
1、将 newuser2 添加到组 staff 中
# usermod -G staff newuser2
2、修改 newuser 的用户名为 newuser1
# usermod -l newuser1 newuser
3、锁定账号 newuser1
# usermod -L newuser1
4、解除对 newuser1 的锁定
# usermod -U newuser1
3)userdel
userdel 用于删除系统已存在的组账号。格式如下:
userdel [-r] LOGIN
其中:
LOGIN:为要删除的用户账号名
-r:同时删除用户的自家目录和 mail 的假脱机文件
例如:
1、删除用户 webmaster
# userdel webmaster
2、删除用户 newuser1,同时删除其自家目录
# userdel -r newuser1
3.查询用户
[root@iz2ze6u0apce8jpapxeubpz tar.gz]# cat /etc/passwd |grep mysql
mysql:x:1000:1000::/usr/local/mysql:/bin/bash
# cat /etc/passwd 可以查看所有用户的列表
# w 可以查看当前活跃的用户列表
# cat /etc/group 查看用户组
首先,用root用户登陆Linux系统或者使用su、sudo等命令提升到root权限。
其次,修改帐户密码,只需要使用passwd命令即可,该命令详细介绍如下:
passwd 选项 用户名
使用的选项:
-l 锁定口令,即禁用账号。
-u 口令解锁。
-d 使账号无口令。
-f 强迫用户下次登录时修改口令。
如果默认用户名,则修改当前用户的口令。
例如,假设当前用户是sam,则下面的命令修改该用户自己的口令:
$ passwd
Old password:******
New password:*******
Re-enter new password:*******
如果是超级用户,可以用下列形式指定任何用户的口令:
# passwd sam
New password:*******
Re-enter new password:*******
普通用户修改自己的口令时,passwd命令会先询问原口令,验证后再要求用户输入两遍新口令,如果两次输入的口令一致,则将这个口令指定给用户;而超级用户为用户指定口令时,就不需要知道原口令。
为了系统安全起见,用户应该选择比较复杂的口令,例如最好使用8位长的口令,口令中包含有大写、小写字母和数字,并且应该与姓名、生日等不相同。
为用户指定空口令时,执行下列形式的命令:
# passwd -d sa
此命令将用户sam的口令删除,这样用户sam下一次登录时,系统就不再询问口令。
passwd命令还可以用-l(lock)选项锁定某一用户,使其不能登录,例如:
例如:
# passwd