在安装Ambari时,Ambari默认的数据库是ProstgreSQL,对ProstgreSQL不太熟悉,选择使用MySql。 但Centos 7 默认支持的是MariaDB数据库. MariaDB是MySQL的一个分支,主要由开源社区在维护。安装过程中先将Centos7默认安装的MariaDB数据库删除,再重新安装MySql.
安装步骤:
- 软件下载 (mysql的rpm包有很多文件,只需要安装Server 和 Client)
- 数据库安装
- 用户权限配置
- 安装目录及功能
- 常用创建用户方法
- 客户端查询工具 (mysql-workbench-community-6.3.7-winx64.msi)
软件安装包:
- MySQL-client-advanced-5.6.22-1.el7.x86_64.rpm
- MySQL-server-advanced-5.6.22-1.el7.x86_64.rpm
数据库安装:
- 删除Centos默认安装的MariaDB
- 命令:rpm -qa|grep mariadb (查mariadb安装包)
- 命令:rpm -e --nodeps mariadb-libs-5.5.44-2.el7.centos.x86_64 (mariadb-libs-5.5.44-2.el7.centos.x86_64是上一条命令查出结果)
- 将MySql的安装包文件上传至linux的某个目录下并在命令行中切换至该目录, 如下图
- 命令: yum install -y perl-Module-Install.noarch (解决mysql server 安装时异常)
- 命令:rpm -ivh MySQL-server-advanced-5.6.22-1.el7.x86_64.rpm ( 安装mysqlServer)
- 命令:rpm -ivh MySQL-client-advanced-5.6.22-1.el7.x86_64.rpm (安装mysqlclient)
- 命令:service mysql start (启动mysql 提示 sucess 则,ok)
- 若服务启动时 Starting MySQL. ERROR! The server quit without updating PID file (/var/lib/mysql/hdp1.pid),按下面步骤操作。
- 命令:rm -rf /usr/my.cnf (删除后重启 reboot, 重新执行上面启动服务命令,提示sucess,则ok)
- 命令:service mysql stop (因为默认root没有密码,你进不去)
用户权限配置:
- mysql_secure_installation:是用来提高mysql库的安全设置的命令,包括为root用户设置密码,删除匿名账号, 取消root用户远程登录权限,删除test库和对test库的访问权限,刷新授权表使修改生效等操作
- 查相关资料,可执行:/usr/lib/mysql_secure_installation 来设置root密码,在实际安装的过程中,mysql给root生成了一个随机的加密密码,在执行mysql_secure_installation时,第一步就过不去. (待研究)
- 上一步走不通,使用mysqld_safe命令,绕过密码登陆,必须先将mysql服务停掉
- 命令:mysqld_safe --user=mysql --skip-grant-tables --skip-networking & mysql -u root mysql (启动mysql,避开密码登陆)
- 我在这里遇到了问题 Error 2002,如下图,切换到 /var/lib/mysql 目录下,可以看到mysql.sock 和 hdp1.pid 文件,说明mysql已经启动
- 命令:mysql --socket=/var/lib/mysql/mysql.sock (如果没有上面的错误,则省掉这步)
进入mysql 客户端的操作命令行
- 执行Sql: use mysql; (切换至mysql 数据库)
- 执行Sql: UPDATE user SET Password=PASSWORD('123456a?') where USER='root'; (更新root用户密码,PASSWORD为加密函数)如图:
- 执行: flush privileges; (刷新权限)
- 输入: quit; (退出mysql 客户端, 返回至linux命令行)
- 命令: service mysql restart (重启mysql服务)
- 命令: mysql -u root -p (以root用户登陆mysql客户端,接下来会提示你输入密码,此时屏幕不可见,不要以为死机)
- 进入mysql 客户端命令行,随便执行一条sql, 如: show databases;
- 返回:ERROR 1820 (HY000): You must SET PASSWORD before executing this statement (这也就是常用的第一次登陆需要修改密码)
- 执行Sql: SET PASSWORD = PASSWORD('123456a?');
- 验证Sql: show databases; (显示结果则OK)
- 执行: quit;
- 命令: service mysql restart (重启mysql服务)
- 命令: mysql -u root -p (进行mysql 命令行)
- 执行: GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456a?' WITH GRANT OPTION; (允许所有IP远程访问mysql)
- 执行: flush privileges; (刷新权限)
- 执行:quit;
- 命令:service mysql restart (重启mysql服务,mysql安装完成)
安装目录及功能:
- mysql安装完成后,文件分布在以下几个目录:
- /var/lib/mysql 数据库文件,目录下的 ibdata1 用于存放数据,索引等,是MYSQL的最主要的数据。ib_filelog是数据库日志文件,采用二进制存储。
- /usr/share/mysql 命令及配置文件目录
- /usr/bin mysqladmin、mysqldump 等命令
- 在linux命令行下,可使用 whereis mysql 命令查看其安装目录,如图:
常见用户创建方法:
- mysql账号由用户名+主机组成,可以出现重复的用户名,跟其他的数据库不一样。
- 主机名可以用机器名或IP地址,也可以用通配符%
- mysql创建用户的方法分成三种:CREATE USER的方法、GRANT的方法、INSERT USER表的方法
- Create User脚本: CREATE USER 'username@host' [IDENTIFIED BY 'PASSWORD'] 其中密码是可选项;
- 示例: CREATE USER 'john'@'192.168.189.71' IDENTIFIED BY "123";
- Grant脚本:GRANT <ALL|priv1,priv2,.....privn> ON [object] To [User] [IDENTIFIED BY 'password'] [WITH GRANT OPTION];
- <privn>:代表权限mysqlr定义的14个权限
- [object] :数据库名.表名
- [User]: userName@host
- [WITH GRANT OPTION]:赋User拥有给其它用户授权的权限
- 示例:grant select,insert,update,delete,create,drop on test.hr to john@192.168.10.1 identified by '123';
- 注意:当user用户存在时,grant会对用户进行授权,但当数据库中不存在该用户时,会创建相应的用户并授权。
- Insert User: 直接向mysql.user表插入记录
客户端查询分析工具:
- 类似于MS sqlserver 的查询分析器或Oracle的PLSql, 在windows机器上执行安装
- 新建至Mysql的连接,输入用户(root), 密码(上一次设置的密码),点击“OK”
- 进入后,即可进行数据库、表的创建或数据的查询操作,如图: