Linux下mysql的安装
移动到安装目录
sudo mkdir /usr/local/mysql
cd /usr/local/src
tar -xzvf ./mysql-5.5.49-linux2.6-x86_64.tar.gz
sudo mv ./mysql-5.5.49-linux2.6-x86_64/* /usr/local/mysql
新建用户
sudo groupadd mysql
sudo useradd -g mysql -s /usr/sbin/nologin mysql #不让mysql用户直接登录
sudo chown -R mysql:mysql /usr/local/mysql/
复制配置文件
cp /usr/local/mysql/support-files/my-medium.cnf /etc/my.cnf
设置权限
chmod +x /usr/local/mysql
配置开机自动启动
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
chmod +x /etc/init.d/mysqld
chkconfig --add mysqld
chkconfig --level 2345 mysqld on
chkconfig --list mysqld #查看是否已应用上
添加MySQL的软链接以适应init脚本
ln -sv /usr/local/mysql/bin/mysql /usr/sbin/mysql
ln -sv /usr/local/mysql/bin/mysqladmin /usr/sbin/mysqladmin
ln -sv /usr/local/mysql/bin/mysqldump /usr/sbin/mysqldump
修改配置文件
vim /etc/my.cnf
在 [mysqld] 节点中添加
datadir = /usr/local/mysql/data #数据文件的位置
log-error = /usr/local/mysql/data/error.log #日志
pid-file = /usr/local/mysql/data/mysql.pid #进程编号
user = mysql #用户名
tmpdir = /tmp
保存退出
初始化数据库
sudo /usr/local/mysql/scripts/mysql_install_db --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --user=mysql
阿里云Centos7安装MySql初始化时报缺少libaio.so.1
由于在阿里云的Centos在centos 7.3 上安装 mysql 5.7.18版本数据库
初始化数据库:./mysqld --initialize-insecure --user=mysql --datadir=/usr/local/mysql-5.7.18/data/
初始化数据库的时候报:
./mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory
libaio包的作用是为了支持同步I/O。对于数据库之类的系统特别重要,因此在linux上安装数据库软件,就需要安装libaio
使用
yum install libaio-devel.x86_64
修改root密码
/usr/local/mysql/bin/mysqladmin -u root -p password “123456”
使用此命令需要启动mysql(如上述文档)
#启动mysql服务, 因为已经安装了mysqld服务到 chkconfig,所以可以直接启动
service mysqld start
初次安装的mysql后,root的密码其实为空,因此通过mysqladmin -u root -p password 123456
这里我将密码修改为123456
进入后,然后让你输入的密码其实为空,直接enter
#请在阿里云中登录mysql服务器
mysql -uroot -p登陆
#在mysql中修改user表,以允许远程登录
#注意: user表中有两个字段: host 原值为localhost user 原值 root
它表示 root用户只能在本地登录,我们要修改它
(见下方)
#重启mysql服务
service mysqld restart
#最后在阿里云 添加安全组规则,打开 3306端口,以便远程访问( 上线后的产品服务器要关闭3306 )
#最后,在本地客户端测试联接mysql服务器.
添加远程连接权限
解决方案
在服务器上登录数据库,然后执行如下授权SQL语句。该授权SQL语句的含义为root用户可用任何IP地址登录数据库,操作任何数据库中的任何对象。
grant all privileges on . to ‘root’@’%’ identified by ‘123456’ with grant option;
参数说明如下。
.参数,第一个“”为数据库占位符,如果填“”则代表所有数据库。第二个“”为数据库对象占位符,如果填“”则代表数据库中所有对象。
‘root’@’%'参数,root为授权登录的数据库账户,“%”为IP地址占位符。假如要限制只能在1.1.1.1登录,则需要把“%”改成1.1.1.1。如果填“%”则代表允许任何IP地址登录。
'123456’参数,该参数为数据库密码。
执行如下SQL语句,刷新权限。
flush privileges;
确认远程MySQL客户端可正常连接数据库。
注意
上传数据库要注意编码格式
show variables like ‘%chara%’
如果有问题
修改/etc/my.cnf
[clinet]
default-character-set=utf8
[mysqld]
character_set_server=utf8
[mysql]
default-character-set=utf8
mysql中修改编码的方式
set character_set_client=utf8;
set character_set_connection=utf8;
set character_set_database=utf8;
set character_set_results=utf8;
set character_set_server=utf8;
set character_set_system=utf8;
set collation_connection=utf8;
set collation_database=utf8;
set collation_server=utf8;