Skip to content

MySQL

Posted on:June 23, 2020 at 10:23:01 GMT+8

安装

Arch Linux 上:

sudo pacman -S mariadb mariadb-libs

安装 mariadb 软件包之后,你必须在启动 mariadb.service 之前运行下面这条命令:

sudo mysql_install_db --user=mysql --basedir=/usr --datadir=/var/lib/mysql

注意: 出于安全考虑,systemd 的 .service 文件设置了 ProtectHome=true 来禁止 MariaDB 访问 /home、/root 和 /run/user 目录内的文件。datadir 必须要放在以上文件夹之外,并且由 mysql 用户和用户组 所有。 如果要改变这个设置,你可以根据以下链接创建一个替代的 service 文件:[2] 然后 enable 或者 start mariadb.service。

提示: 如果数据目录使用的不是 /var/lib/mysql,需要在 /etc/my.cnf.d/server.cnf 文件的 [mysqld] 部分设置 datadir=<数据目录> 用下面这个命令启动数据库级别的安全配置助手,来配置一些必要的安全选项:

sudo mysql_secure_installation

连接

mysql -u root -p

显示所有的数据库:

show databases;

use uno;

show tables;

select * from names;

SELECT
   select_list
FROM
   table_name
ORDER BY
   column1 [ASC|DESC],
   column2 [ASC|DESC],
   ...;

MySQL

用户

添加新用户

先用 root 登录数据库 sudo mysql -p -u root

CREATE USER ‘dbcourse’@‘localhost’ IDENTIFIED BY ‘some_pass’;

授予权限

授予 dbcourse 用户全部操作权限 GRANT ALL PRIVILEGES ON test TO ‘dbcourse’@‘localhost’;

刷新权限

FLUSH PRIVILEGES;

WHERE

报错

报错:

MariaDB [test]> INSERT INTO S VALUES('S1', '精益', '20', '天津');
ERROR 1366 (22007): Incorrect string value: '\xE7\xB2\xBE\xE7\x9B\x8A' for column `test`.`S`.`SNAME` at row 1

解决: https://stackoverflow.com/questions/1168036/how-to-fix-incorrect-string-value-errors 连接数据库后:

SET NAMES 'utf8';
SET CHARACTER SET utf8;

另:检查数据库设置:

mysql> show variables like '%colla%';
mysql> show variables like '%charac%';